2010-08-29 37 views
5

Tôi đã điều sau đây:Đại biểu handler và trẻ em bên trong nhấ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); 
}); 

handler nhấp chuột được gọi bất cứ khi nào một trong những yếu tố p bên trong được nhấn vào, cũng như các yếu tố cha mẹ li.

Làm cách nào để có con trỏ đến phần tử cha chính, bất kể phần tử con bên trong nào được nhấp? Ví dụ: các phần tử li thực của tôi trông giống như:

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

vì vậy tôi đang tìm một số kiểm tra để sao lưu vào li gốc được nhấp. Có cách nào để chỉ cần chọn các phụ huynh của một loại như:

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

Cảm ơn

Trả lời

2

Trong xử lý, this sẽ đề cập đến các yếu tố li.

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

var target = $ (this) phải là một cách - đó là cách tôi thường làm. $ (event.target) .parents ("li") sẽ khác, nhưng bạn có thể nhận được nhiều hơn bạn mong đợi.

+0

phải là 'parent',' parent' sẽ trả về tất cả 'li' nếu bạn đang lồng' ul's cho một menu chẳng hạn. cha mẹ sẽ chỉ trả về giá trị đầu tiên khớp với công cụ chọn. – prodigitalson

+0

@prodigitalson - Điều đó không hoàn toàn đúng. Phương thức '.parent()' của jQuery chỉ xem xét phần tử cha mẹ trực tiếp. Nếu bạn vượt qua một bộ chọn, và cha mẹ ngay lập tức không phù hợp với nó, bạn sẽ nhận được một đối tượng jQuery rỗng. – user113716

Các vấn đề liên quan