我需要检查一个元素是否存在,我正在执行以下操作:
我该如何使用实时方法或其他方式来完成它?
$('#obj').livequery(function() { ... });
我该如何使用实时方法或其他方式来完成它?
livequery
之外,另一种方法是使用“发布/订阅”方法,例如使用此实现:
jQuery Tiny Pub/Sub:jQuery的一个非常非常非常小的Pub / Sub实现。
例如,我使用它的方式如下:// 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();
});
如果是你的代码向DOM添加元素,那么在创建它时就运行你的代码:
$('body').append('<div id="obj">some new object</div>');
var obj = $('#obj');
obj.runSomeCode();
...或者你甚至可以在它被附加之前就这样做:
var obj = $('<div id="obj">some new object</div>');
obj.runSomeCode();
obj.appendTo('body');
http://bitcubby.com/tracking-the-insertion-of-javascript-components-into-the-dom/
这里有一个来自该页面的例子: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);
这是一个老问题,但我很惊讶居然没有答案,因为它很简单。你必须使用on()并将事件附加到父元素或body上。例如:
$('#obj').livequery('click', function() { ... });
$('#obj').livequery(function() { ... });
$('body').on('click', '#obj', function() { ... });
$('body').on('DOMNodeInserted','#obj', function() { ... });
请注意,DOMNodeInserted 仅适用于 IE9+。
$(document).ready(...);
吗?) - Rup