如果忽略条件JQuery

时间:2013-09-13 20:19:47

标签: javascript jquery if-statement conditional-statements

我正在尝试设置一个只能被点击一次的div,但我的if会一直忽略这个条件,我真的不知道为什么。

$(document).ready(function() {
  var defaultState = true;
  if (defaultState) {
    defaultState = false;
    $("#element").click(function() {
    //Do stuff to elements
  }
});

我尝试用不同的方式解决它。我希望这个条件只用一个上下文填充一个div,但只有一个时间。所以我尝试了这样的条件:if($("#element").html().length === 0)我甚至用控制台检查了我的病情值,即使它是5000,显然不再是0,它一直忽略我的状况并进入了if

4 个答案:

答案 0 :(得分:2)

绑定点击处理程序后,它就被绑定了。从那时起,直到你取消绑定它,该处理程序将始终被触发。

听起来one()就像你要找的那样:

$('#element').one('click', function() {
   //...
});

这只会触发一次。

答案 1 :(得分:1)

事件处理程序已经在document.ready运行之后第一次连接。

您可以使用jQuery .one()事件处理程序。 jQuery .one() documentation

$("#element").one('click', function() {
    //Do stuff to elements
});

答案 2 :(得分:1)

$(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;
    }
});

答案 3 :(得分:0)

添加事件监听器$("#element").click(function() {后,它将与该元素绑定。 但是您可以将if置于click函数中,并在false内部将if提供给您的flag变量。 优点您可以再次提供变量true,然后点击将再次“运行”。

$(document).ready(function () {
    var defaultState = true;
    $("#element").click(function () {
        if (defaultState) {
            defaultState = false;
            //Do stuff to elements
        } else {
            return false;
        }
    });
});