2010-08-29 52 views
5

我有以下幾點:每當內部p元素的一個被點擊代表處理器和內兒童點擊

<ul id ='foo'> 
    <li><p>hello</p></li> 
    <li><p>hello</p></li> 
    <li><p>hello</p></li> 
</ul> 

$('#foo').delegate('li', 'click', function(event) { 
    var target = $(event.target); 
    console.log(target); 
}); 

單擊處理程序被調用,以及父li元素。

如何獲得指向父li元素的指針,而不管哪個內部子元素被點擊?例如,我真正的li元素看起來像:

<li> 
    <p>one</p> 
    <div> 
    <p>two</p> 
    </div> 
</li> 

所以我發現我已經有幾個檢查站起來向被點擊的家長裏。有沒有辦法只選擇喜歡類型的父:

$('#foo').delegate('li', 'click', function(event) { 
    var target = $(event.target).('li'); 
    console.log(target); // will always be parent li element itself? 
}); 

感謝

回答

2

在處理程序,this將參照li元素。

$('#foo').delegate('li', 'click', function(event) { 
    var target = $(this); 
    console.log(target); // will always be parent li element itself? 
}); 
0

var target = $(this)should be one way - 這就是我通常這樣做的方式。 $(event.target).parents(「li」)會是另一個,但是你可能會比你期望的更多。

+0

這應該是'parent','parent'會返回所有'li',例如,如果您爲菜單嵌套'ul's。父母將只返回匹配選擇器的第一個。 – prodigitalson 2010-08-29 03:28:51

+0

@prodigitalson - 這不太對。 jQuery的'.parent()'方法只查看直接父對象。如果你傳遞一個選擇器,並且直接父對象不匹配,你會得到一個空的jQuery對象。 – user113716 2010-08-29 04:01:39