2013-01-18 9 views
5

Ok đây ví dụ jsfiddleJquery về sự kiện là không bắt buộc đối với các yếu tố phi hiện

http://jsfiddle.net/HTjCT/1/

Như bạn có thể nhìn thấy bạn khi bạn di chuột nó không được bắn mouseover kiện

làm thế nào tôi có thể giải quyết này vấn đề ?

tôi đang sử dụng Jquery 1,9

<div id='superdiv'>Click Me</div> 


$(function() { 
    $('#superdiv').on('click', function (event) { 
     $('body').append('<div id="super">another'); 
    }); 
    $('#super').on('mouseover', function (event) { 
     alert('not working'); 
    }); 
}); 

javascript

Trả lời

9

Bạn phải sử dụng "đại biểu", như thế này (để cung cấp "sống") $('body').on('mouseover', '#super', function (event) {

+0

nhờ làm việc :) – MonsterMMORPG

+8

Trong khi điều này là chính xác, xin đừng bắt đầu gắn tất cả các xử lý sự kiện của mình vào thân hình. Sự kiện ủy nhiệm hoạt động bằng cách chụp * mọi sự kiện * bong bóng lên và sau đó kiểm tra phần tử nguồn để xem liệu nó có khớp với phần tử quan tâm ('# super' ở đây) hay không. Vì vậy, mỗi khi bạn di chuột qua ** bất kỳ thứ gì ** trên trang bạn đang phát sinh lượt truy cập để kiểm tra xem yếu tố đó có phù hợp hay không. Đặt đại biểu của bạn như là địa phương càng tốt để nguồn, và bạn sẽ nhận được hiệu suất tốt hơn, hơn là gắn bó với cơ thể mỗi khi – WickyNilliams

+0

Điều này là tuyệt đối đúng, nó chỉ là ví dụ này để hiển thị đại biểu. –

-1

Các div bạn muốn tạo onclick, không khép lại với những '</div>' thẻ.

gì nếu bạn cố gắng đoạn mã sau:

$(function() { 
    $('#superdiv').on('click', function (event) { 
     $('body').append(
      $('<div/>',{ 'id' : 'super', 'text' : 'tetet'}).mouseover(function(event) { 
        alert('test'); 
      }) 
     ); 
    }); 
}); 
+0

ngươi nhưng vẫn không làm cho sự khác biệt :) http://jsfiddle.net/HTjCT/5/ – MonsterMMORPG

0

Bạn cũng có thể quấn chuột lên sự kiện trong một hàm và gọi nó bất cứ khi nào bạn thêm các phần tử mới mà bạn muốn bị ảnh hưởng. Bằng cách đó, vấn đề mà WickyNilliams chỉ ra sẽ không ảnh hưởng đến bạn.

$(function() { 
    $('#superdiv').on('click', function (event) { 
     $('body').append('<div id="super">another'); 
     mouse(); 
    }); 
    function mouse() { 
     $('#super').on('mouseover', function (event) { 
      alert('not working'); 
     }); 
    }); 
    mouse(); 
}