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
}

});

它不起作用。条件永远不会返回 true。我可以让它工作的唯一方法是使用.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 回答