【问题标题】:if ignores the condition JQueryif 忽略条件 JQuery
【发布时间】:2013-09-18 15:05:35
【问题描述】:
我正在尝试设置一个只能单击一次的 div,但我的 if 一直忽略条件,我真的不知道为什么。
$(document).ready(function() {
var defaultState = true;
if (defaultState) {
defaultState = false;
$("#element").click(function() {
//Do stuff to elements
}
});
我尝试以不同的方式解决它。我希望这个条件只用另一个 div 的上下文填充一个 div,但只有一次。所以我尝试这样设置条件:if($("#element").html().length === 0) 我什至用控制台检查了我的条件值,即使它是 5000,显然不再是 0,它一直忽略我的条件并进入 if。
【问题讨论】:
标签:
javascript
jquery
if-statement
conditional-statements
【解决方案1】:
事件处理程序已经在第一次被附加,就在 document.ready 运行之后。
您可以只使用 jQuery .one() 事件处理程序。
jQuery .one() documentation
$("#element").one('click', function() {
//Do stuff to elements
});
【解决方案2】:
一旦你绑定了点击处理程序,它就被绑定了。从那时起,直到您解除绑定,该处理程序将始终被触发。
听起来one() 就是你要找的东西:
$('#element').one('click', function() {
//...
});
这只会触发一次。
【解决方案3】:
$(document).ready(function() {
$("#element").one('click', function() {
//Do stuff to elements
});
});
或
$("#element").on('click', function(){
//Do what you want
});
//Later in your code
$("#element").off('click');
如果您打算使用标志变量,您也可以这样做:
$(document).ready(function() {
var defaultState = true;
$("#element").click(function(e) {
if (defaultState) {
//Do what you want
}
defaultState = false;
}
});
【解决方案4】:
一旦您添加了一个事件侦听器$("#element").click(function() {,它将绑定到该元素。 但是您可以做些什么来将您的if 放入 click 函数中,并在 if 内将 false 提供给您的标志变量。
优点是你可以再次给变量true,你点击会“再次”运行。
$(document).ready(function () {
var defaultState = true;
$("#element").click(function () {
if (defaultState) {
defaultState = false;
//Do stuff to elements
} else {
return false;
}
});
});