3

アラートであるいくつかの div があります。ユーザーはそれらを却下し、最後のもの (DOM の最初のもの) の後、jquery マジックをトリガーする必要があります。

簡略化された HTML を次に示します。

​<body>
<div class="">Bla bla bla</div>
<div class="alert">A</div>
<div class="alert">B</div>
</body>​

これが私がjqueryでやろうとしていることです...

$(".alert").click( function() {

if ( $(this).is(".alert:first") ) { 
//do stuff
}

});

うまくいきません。条件は真を返しません。私がそれを機能させる唯一の方法は使用する.index()ことですが、マークアップの順序が変更されるとスクリプトが壊れてしまうため、それは最悪です。

私は何を間違っていますか?

編集:解決策は使用します.index()が、私が気づかなかった方法で可能でした。そのように使用された場合、それ一致した選択に関連しています。ありがとう!

4

4 に答える 4

6

次のようにコーディングできます。

$(".alert").click(function() {
    if ($(".alert").index(this) == 0) {
       // 
    }
});

http://jsfiddle.net/g2gGa/

于 2012-11-20T17:32:58.090 に答える
2

代わりにこれを試してください:

if ($(this).hasClass("alert") && $(this).is(":first")) { 
  //do stuff
}

代わりに:

$(".alert").click( function() {
    if ($(".alert").index(this) == 0) { 
        //do stuff
    }
});

これが役立つことを願っています!!

于 2012-11-20T17:29:49.417 に答える
1

このjsfiddleを試してください

$(".alert").click( function() {

      if (this == $(".alert:first")[0] ) { 
        //do stuff 
           alert(this);
       }

});​
于 2012-11-20T17:34:17.233 に答える
0

これを試すことができます。

$('.alert').click( function() {

if ( ($(this)[0] === $('.alert').first()[0])) { 
alert('first');
}

});​
于 2012-11-20T17:34:13.437 に答える