2013-05-27 40 views
21

tôi có thể lắng nghe tất cả các sự kiện mrow bấm vào một div, sử dụng sometihng nhưNghe tất cả các sự kiện onClick của tất cả trẻ em trong jQuery

$('#mydiv').on('click', 'mrow', function() { 
    var moo = $(this).attr('id'); 
    if (handlers[id]) { 
     event.stopPropagation(); 
     handlers[id](); 
} 

Tôi có thể sử dụng một thiết lập tương tự để nghe trên tất cả sự kiện click tất cả trẻ em của div (Không thiết lập, người nghe riêng biệt cho mọi loại)? Một số phần của cây có chức năng xử lý và một số thì không, và tôi muốn các yêu cầu này lan truyền trong div, cho đến khi có một trình xử lý được tìm thấy.

+0

"tất cả trẻ em" Hậu duệ trực tiếp hoặc tất cả hậu duệ? –

Trả lời

34
$('#mydiv').on('click', '*', function() { 

* sẽ liên kết với tất cả các yếu tố trong vòng #mydiv

Demo -->http://jsfiddle.net/Vjwqz/1/

+0

Nếu tôi thử điều này, http://jsfiddle.net/Vjwqz/, có vẻ như không có gì xảy ra:/ –

+0

ya, vì không có #mydiv bên trong #mydiv. Xem câu trả lời của tôi;) –

+0

Tôi hiểu, cảm ơn các bạn! –

1

Tôi nghĩ rằng bạn có thể bỏ chọn

$('#mydiv').on('click', function() { 

chọn Loại: String Một chuỗi selector để lọc con cháu của các yếu tố được chọn kích hoạt sự kiện. Nếu bộ chọn là null hoặc bị bỏ qua, sự kiện luôn được kích hoạt khi nó đạt đến phần tử đã chọn.

http://api.jquery.com/on/

+1

Tôi đã thử điều này lúc đầu nhưng sau đó $ (this) .attr ('id) luôn là #mydiv và event.target.id là' 'khi tôi bấm vào một nubmer bên trong nó, ví dụ - Tôi không thể propogate lên cho đến khi tôi tìm thấy một handler hợp lệ. –

9

Đối với tất cả con cháu:

$('#mydiv').on('click', '*', function() {...}); 

Đối với hậu duệ trực tiếp: {những gì được gọi là trẻ em trong Javas cript}

$('#mydiv').on('click', '> *', function() {...}); 
Các vấn đề liên quan