2012-11-20 152 views
3

我有幾個div是警報。用戶解散它們並在最後一個(這是DOM中的FIRST)之後,我需要觸發一些jquery魔法。jQuery:測試元素是否爲MATCHED元素的第一個

下面是一些簡單的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()但以我沒有意識到的方式是可能的。如果以這種方式使用,則其相對於匹配選擇。謝謝!

+2

'$。點擊(函數(){'(警報) - 周圍缺少引號'.alert' –

+1

這是一個錯字這是正確的在我的代碼。謝謝 – emersonthis

+0

如果你改變你的html,不會使用':first'就像'.index()'改變一樣 – Jack

回答

2

試試這個:

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

或者:

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

希望這將幫助!

+0

這對我也不適用 – emersonthis

+0

@Emerson,i已經更新了我的答案。 –

0

你可以試試這個。

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

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

});​ 
1

試試這個jsfiddle

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

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

});​ 
相關問題