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 に答える