0

如果满足某个条件,我试图打破一个函数(一个元素有一个类,这个类是动态添加和减去的)

代码:

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 类并因此退出该函数?

希望这很清楚,如果您需要更多代码,请告诉我。

4

2 回答 2

0

也许您可以考虑使用 .on 方法设置悬停事件。然后,您通常会在哪里添加toolDisabled1类(在选择所谓的 iso 元素时),您可以关闭悬停事件。然后在必要时(单击画布上的其他任何位置或返回矩形),您可以重新设置悬停事件。

我在这里写了这个技术的一个小例子:http: //jsfiddle.net/XyDUV/

于 2012-05-24T15:17:03.513 回答
0

问题可能在于变量$disabledTools选择了多个元素。如果此 jQuery 选择中的任何一个元素具有类,toolDisabled1那么您的 if 语句将返回 true。

当您进行检查时,该类是否toolsDisabled1应用于这些元素 ( ) 中的任何一个?$('#mainToolFill, #mainToolStrokeStyle, #mainToolStrokeColour')

于 2012-05-24T13:09:01.763 回答