Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果语句在单击时循环,为什么?_Javascript_Jquery - Fatal编程技术网

Javascript 如果语句在单击时循环,为什么?

Javascript 如果语句在单击时循环,为什么?,javascript,jquery,Javascript,Jquery,这里有一件很简单的事情,我没有注意到。我有一个非常简单的事件和一个非常简单的处理程序: $('#toggler').on('click',function(){ if ($(this).hasClass('choose')) { $(this).removeClass('choose'); $.ui.hint.turnOn(); } else { $(this).addClass('choose');

这里有一件很简单的事情,我没有注意到。我有一个非常简单的事件和一个非常简单的处理程序:

$('#toggler').on('click',function(){
      if ($(this).hasClass('choose')) {
          $(this).removeClass('choose');
          $.ui.hint.turnOn();
      }
      else {
          $(this).addClass('choose');
          $.ui.hint.turnOff(); 
      }

    });
当我点击它时,它基本上是循环的,不断地添加和删除类。为什么会发生这种情况?我如何修复它? 谢谢

编辑:html:

        <div id="toggler">
            <a href="#" mode="normal">Вкл.</a>
            <div class="hint-switcher">
                <div class="hint-switcher-toggle"></div>
            </div>
            <a href="#" mode="choose">Выкл.</a>
        </div>


这是一个简单的开关,只使用css来改变它的状态。

我不确定。但是你应该把必要的参数传递给函数。您正在使用“ui”对象,但没有传递它。试试这个

$('#toggler').on('click',function(event,ui){
      if ($(this).hasClass('choose')) {
          $(this).removeClass('choose');
          $.ui.hint.turnOn(); // Problem lies in this line i think. if this doesn't work
      }
      else {
          $(this).addClass('choose');
          $.ui.hint.turnOff(); // here too.
      }

    });

如果不起作用,请忽略我的建议。

好的,我已经找到了问题所在。在我的项目中的另一个文件中有一个
触发器('click')
,我不小心错过了它,这导致了问题。感谢所有帮助过我的人,我对此表示感谢。

$.ui.hint.turnOff
$.ui.hint.turnOn
.on('click',function(e){e.preventDefault();…。首先删除$.ui.hint.turnOn()和$.ui.hint.turnOff();并查看它是否在这种情况下工作。我无法使用您提供的代码复制此代码。请参见此处:您能否显示完整的jquery代码,即从document ready函数开始的代码。我已经检查了相同的代码,无法复制您的问题。不,不是这样,我正在从ui命名空间调用静态方法。但无论如何,谢谢:)如果他这样做的话,这个答案是正确的
$.ui
没有使用
ui
作为变量——JS中
之后的名称是文字,而不是变量。该触发器是如何从单击处理程序调用的?@jcsanyi不是的,该元素的父元素上有一个单击处理程序触发了对开关的单击。非常愚蠢,但这不是我的代码,哈这就是为什么你要避免使用意大利面代码,迫不及待地想在将来使用angular.js。