jQuery:测试if元素是MATCHED元素的第一个

时间:2012-11-20 17:26:46

标签: javascript jquery

我有几个警告的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(),但这很糟糕,因为如果标记的顺序发生变化,它将破坏脚本。

我做错了什么?

编辑:解决方案使用{{1}}但是我没有意识到这种方式是可能的。如果以这种方式使用, 相对于匹配的选择。谢谢!

4 个答案:

答案 0 :(得分:6)

您可以编码:

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

http://jsfiddle.net/g2gGa/

答案 1 :(得分:2)

请改为尝试:

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

或者:

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

希望这会有所帮助!!

答案 2 :(得分:1)

试试这个jsfiddle

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

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

});​

答案 3 :(得分:0)

你可以试试这个。

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

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

});​