1

私はクラスごとにz-index管理を行っています..アクティブなオブジェクトはクラスを一番上に取得します..

function topmost() {
    $(".topmost").removeClass("topmost");
    $("#thing").addClass("topmost");
}

このコードは機能していないようで、その理由がわかりません..

==編集==

問題は$(".topmost").removeClass("topmost");、ページに複数ある場合に結果がゼロになることです。私はこのクラスセレクターを頻繁に使用していますが、この問題は一度もありません。クラスは最初に jQuery によって追加されていますが、とにかくそれを見る必要があります。インスペクターを見て選択をログに記録すると、クラスで少なくとも 3 つの div が表示されるとゼロになります。オブジェクトにネストされた関数ですが、問題はありますか? オブジェクトをスコープアウトして DOM 全体を検索できますか?

4

6 に答える 6

1

私が正しく理解していれば、domがロードされた後に要素を挿入していますか?その場合は、domに存在する親要素にイベントを委任する必要があります。

$('body').on('click','div', function() {
    $('.topmost').removeClass();
    $(this).addClass('topmost');
});

bodydomreadyに存在する最も近い親要素に置き換えることができます

最後に、イベントバインディングを常に$(document).ready関数内にラップするか、スクリプトをhtmlコードの下部に配置して、バインディング時に要素が存在するようにします。

これが機能するフィドルの例です

http://jsfiddle.net/MPT3z/

クリックイベントをすべての要素に適用する方法は次のとおりです

$('body').on('click','*', function() {
    $('.topmost').removeClass();
    $(this).addClass('topmost');
});

http://jsfiddle.net/eLDpn/

于 2012-09-05T20:53:44.860 に答える
0

これを試して

         $(document).on('click', '#SELECTOR', function(){
             $(".topmost").removeClass("topmost");
              $(this).addClass("topmost");
         });

#SELECTORを配置する場所で、これを適用する要素に変更します

あなたが意図したものを選択するためにそれが適切に定義されていると仮定すると、オブジェクトはそこに行くことさえできます

于 2012-09-01T20:35:39.783 に答える
0

この関数を呼び出しているときに、ページでポストバックが発生していますか??

于 2012-09-04T22:27:32.000 に答える
0

これは非常に簡単に解決できます。要素に ID を付けます。ID をセレクターとして使用します。

function topmost() {
    $("#myDiv").removeClass("topmost");
    $("#myDiv").addClass("topmost");
}
于 2012-09-01T20:58:00.640 に答える
0

これを試して:

function topmost(el) {
    $(".topmost").removeClass("topmost");
    if ($(el).length > 0) {
       $(el).addClass("topmost");
    }
}
于 2012-09-01T21:00:25.283 に答える
0

セレクターに .each を追加すると、デバッグが容易になる場合があります。

function topmost() {
  $(".topmost").each(function() {
    console.log("yo");
    $(this).removeClass("topmost");
  });
  $("#thing").addClass("topmost");
}
于 2012-09-01T21:56:33.770 に答える