【问题标题】: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;
              }
          });
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-11
        • 2019-10-22
        • 1970-01-01
        相关资源
        最近更新 更多