我试图在满足某个条件时断开一个函数(一个元素有一个类,这个类被动态地加上和减去)
代码:
this.buildMainToolsBar = function(options,display){
var all = options.all || null,
$mainToolsBarRef = $('#mainToolsBar'),
$disabledTools = $('#mainToolFill, #mainToolStrokeStyle, #mainToolStrokeColour');
if($disabledTools.hasClass('toolDisabled1')) {
return;
}else{
$('form [id^=mainTool] > .toolInfo, form [id^=mainTool] > .navDown',$mainToolsBarRef).hover(function(){
$(this).parents('div[id^=mainTool]:not([id=mainToolsBar]):first').addClass('toolHover');
},function(){
$(this).parents('div[id^=mainTool]:not([id=mainToolsBar]):first').removeClass('toolHover');
});
}
只有在单击特定元素时才会显示类toolDisabled1。问题似乎是即使在找到toolDisabled1之前条件仍然返回true。
而不是:
return;
我也尝试过:
$disabledTools.removeClass('toolHover');
试图打破这个功能。
我也试过
('$disabledTools[class=toolDisabled1]').removeClass('toolHover');
如何动态检测是否已添加toolDisabled1类,从而返回函数?
希望如果您需要更多代码让我知道,这一点很清楚。
答案 0 :(得分:0)
问题可能在于变量$disabledTools
正在选择多个元素。如果此jQuery选择中的任何一个元素具有类toolDisabled1
,则if语句将返回true。
当您进行检查时,班级toolsDisabled1
是否适用于这些元素中的任何一个($('#mainToolFill, #mainToolStrokeStyle, #mainToolStrokeColour')
)?
答案 1 :(得分:0)
也许您可以尝试使用.on方法设置悬停事件。然后你通常会添加toolDisabled1
类(选择你所谓的iso元素),你可以关闭你的悬停事件。然后在必要时(单击画布上的任何其他位置或返回矩形),您可以重新设置悬停事件。
我在这里写了一个小技巧的例子:http://jsfiddle.net/XyDUV/