2012-01-13 31 views
6

Tôi có một số mã như thế này:Không thể thiết lập kích xử lý sự kiện trên nội dung tự động tạo ra

$('.play').on('click', function(){ 
    console.log('click'); 
}); 

Yếu tố .play là tự động tạo ra với $('.game').html('<span class="paly">Play</span>') phương pháp. Tuy nhiên, tôi không có gì trong nhật ký giao diện điều khiển của mình khi tôi nhấp vào khoảng này. Tôi đang làm gì sai?

Cảm ơn.

PS: Tôi đang sử dụng jQuery 1.7.1

+1

[câu trả lời này] (http://stackoverflow.com/a/8774734/1114171) có thể giúp, tôi tin rằng bạn đang sử dụng 'on()' như 'bind()' không thích 'on() ' –

Trả lời

12

Không sử dụng live() - nó không được dùng nữa. Thay vì sử dụng on(), nhưng sử dụng nó trên một yếu tố phụ huynh ủy sự kiện để, như thế này:

$('#parentOfPlay').on('click', '.play', function(){ 
    console.log('click'); 
}); 
+0

Đó sẽ là cái khác xung quanh: '$ (" # parentOfPlay "). On (" click "," .play ", function() {});' . –

+0

@ FrédéricHamidi Yeah chỉ cần nhận thấy bản thân mình - chỉnh sửa. Cảm ơn. –

+1

Đúng, điều đó thực hiện điều đó. Nếu tôi không đúng, tôi cần phải sử dụng $ (tài liệu) .on với nội dung động là $ ('. Selector') .với nội dung không động, phải không? – bbrodriges

-2

Hãy thử điều này:

$('.play').live('click', function(){ 
    console.log('click'); 
}); 
-2

Bạn có chắc chắn các yếu tố ".play" đã ở đó khi thực hiện mã của bạn? Hoặc có thể nó chỉ được tạo sau này trong mã .. Nó có thể là một vấn đề đặt hàng.

chỉnh sửa: Nếu bạn muốn nó năng động, sử dụng 'sống' thay vì 'trên theo đề nghị của người khác :)

-1

Hãy thử với

$(document).on('click', '.play' 
    function(){ 
     console.log('click'); 
}); 
+0

' .live() 'không được chấp nhận và phải được tránh. Sử dụng '.on()' hoặc '.delegate()' –

1

Bạn có thể sử dụng trực tiếp (mà bây giờ bị phản đối trong 1,7 .1 vì vậy bạn thực sự không nên sử dụng nó) hoặc làm điều đó với trên, nhưng bạn đang làm 'trên' sai.

$(document).on('click', '.play', function(){ 
    console.log('click'); 
}); 
0

Đây là một break tốt xuống những gì để sử dụng và khi nào. https://stackoverflow.com/a/8845306/1139444

.on sẽ cung cấp cho bạn ảnh hưởng mà bạn đang tìm kiếm nhưng bạn cần thực hiện trên bộ chọn tài liệu và đặt bộ chọn lớp vào cuộc gọi .on.

$(document).on('click', '.play', function(){ 
    console.log('click'); 
}); 
0

chọn .play đang tìm kiếm một container với lớp đó, vì vậy bạn sẽ cần phải tạo ra các mã với:

$('.game').html('<span class="play">Play</span>'); 
0

.html() bộ nội dung của tất cả các khối có một trò chơi lớp có tên chơi. Bạn chưa tạo bất kỳ lớp học nào .play do đó làm $(".play") không có gì. Chức năng nhấp chuột không bị ràng buộc với bất cứ điều gì và không có gì được hiển thị trên bảng điều khiển. Hãy thử làm $(".game").on("click",function(){});

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