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。