2011-07-01 28 views
7

Tôi cần phải kiểm tra khi một phần tử còn sống, tôi đang làm:Thay thế cho plugin jQuery livequery?

$('#obj').livequery(function() { ... }); 

Làm thế nào tôi có thể làm điều đó với phương pháp trực tiếp hoặc cách khác?

+0

Có điều gì đó bạn đang tạo động hoặc là nó có mặt trên trang của bạn khi nó được nạp (nhiều hơn một lần?)? (tức là bạn chỉ có thể sử dụng '$ (tài liệu) .ready (...);'?) – Rup

+0

tôi sẽ tạo '#obj' này bằng javascript rồi tự động – Codnickers453

+0

idk tại sao nhưng khi tôi làm fadeIn() trong một số phần tử , plugin livequery sẽ không hoạt động vì tôi muốn tìm một giải pháp thay thế mới. – Codnickers453

Trả lời

1

Nếu nó là mã của bạn cũng được bổ sung thêm phần tử vào DOM, sau đó chạy mã của bạn trên đó khi bạn tạo ra nó:

$('body').append('<div id="obj">some new object</div>'); 

var obj = $('#obj'); 

obj.runSomeCode(); 

... hoặc thậm chí bạn có thể làm điều đó trước khi nó được nối:

var obj = $('<div id="obj">some new object</div>'); 

obj.runSomeCode(); 

obj.appendTo('body'); 
+0

tôi chỉ muốn thay thế cho plugin livequery ... – Codnickers453

+0

Vâng, như là một thay thế cho việc sử dụng truy vấn trực tiếp, bạn có thể tự chạy hàm khi bạn làm mờ phần tử vào trang. – Rup

+1

@Rapososoo: Đây là giải pháp thay thế cho sử dụng livequery. Nếu bạn không muốn livequery làm điều đó tự động, bạn cần phải mã nó bằng tay, đó là một thực hành tốt hơn anyway IMO. – user113716

2

đây là một câu hỏi cũ, nhưng đối với các hồ sơ, ở đây tôi 5 cent:


một thay thế cho.210 là sử dụng một cách tiếp cận Publish/Subscribe với ví dụ thực hiện này jQuery Tiny Pub/Sub: A really, really, REALLY tiny pub/sub implementation for jQuery.

tôi sử dụng nó, ví dụ, bằng cách này:

// inform of DOM change (mostly through AJAX) 
$.publish("/table/loaded"); 

// re-execute plugin 
$.subscribe("/table/loaded", function(e, data) { 
    $("#my_id input[name='date']").datepicker(); 
}); 

+ info: Understanding the Publish/Subscribe Pattern for Greater JavaScript Scalability

1

Là một thay thế cho livequery bạn có thể xem plugin $ .whenLive jQuery:

$ .whenLive cho phép bạn theo dõi chèn cây DOM của một hoặc nhiều phần tử.

http://bitcubby.com/tracking-the-insertion-of-javascript-components-into-the-dom/

Dưới đây là một ví dụ từ trang đó:

var widget = $("<div>I am a nobody. Nobody is perfect. Therefore, I am perfect.</div>"); 
$(widget).onLive(function() { 
    // Awesomesauce. 
    var height = $(this).height(); 
    var width = $(this).width(); 
}); 
$("body").append(widget); 
0

Đó là một câu hỏi cũ nhưng tôi ngạc nhiên không có câu trả lời vì nó đơn giản. Bạn phải sử dụng on() và đính kèm sự kiện vào cha mẹ hoặc cơ thể. Ví dụ:

$('#obj').livequery('click', function() { ... }); 
$('#obj').livequery(function() { ... }); 

trở thành

$('body').on('click', '#obj', function() { ... }); 
$('body').on('DOMNodeInserted','#obj', function() { ... }); 

lưu ý rằng DOMNodeInserted là IE9 +