2011-07-10 47 views
4

我試圖委託單擊事件到所有現在和未來divs與「面板」類的所有第一錨標記。我做了這樣的事情:jQuery委託選擇器問題

$('#panel').delegate('.panels a:first', 'click', function(event) [...] 

但這並不起作用。它僅將事件綁定到一個,第一個「.panels」。任何提示?

回答

3

我不認爲你可以只用一個選擇器來做到這一點,除非碰巧a元素不僅僅是第一個錨點,而是「面板」div之內的任何一種第一個孩子(在這種情況下你可以使用:first-child)。

您可能必須在處理程序本身中添加一些邏輯,以檢查點擊的錨點是div中的第一個錨點。沿着這些路線的東西:

$("#panel").delegate(".panels a", "click", function() { 
    if ($(this).siblings("a").andSelf()[0] === this) { 
    // It's the first anchor in its parent 
    } 
    return false; 
}); 

Live example

做是因爲siblingsandSelf既保證保持文檔順序jQuery對象內部的數組,所以檢查是否this[0]個元素的作品。

+0

是的,它總是第一個孩子在「板」,所以:第一,孩子是不夠的。你的速度更快,所以在幾分鐘內我會將你的答案標記爲正確。 :) – ThomK

3

要使用:first-child,:first只返回一個元素。

你現在正在做的是等於$('.panels a').get(0)

來源:
http://api.jquery.com/first-selector/

+0

謝謝。從第一個變爲第一個孩子。 :) – ThomK

+0

很高興聽到:) –