如何捕获DOM元素的创建并使用jQuery操作它们

我正在尝试设计一种方法,当添加一个简单的div元素与类和一些data- *时,它将替换它或添加一些其他元素。 不应该手动调用此方法,而是通过某种.live()jQuery方法,自定义事件或类似$(’body’)。bind(’create.custom’)等自动调用此方法。我需要它因为我不会提前知道将创建哪些元素,因为它们将通过像单个空div或p的ajax来提供。

   on create   jQuery(function($){ $("div.fancyInput").each(function(index,element){ var $div = $(this); var dataId = $div.attr("data-input-id"); var inputId = ''; var labelId = ''; if(!!dataId){ inputId = 'id="' + dataId + '"'; labelId = 'id="' + dataId + 'Label"'; } // if var dataValue = $div.attr(); $( '

' + ' ' + ' ' + '

' ).appendTo($div); }); // .each() }); // jQuery() jQuery(function($){ var counter = 2; var $form = $('#form'); $('#add').click(function(event){ $('
').appendTo($form); counter++; }); // .click }); // jQuery() add another one

更新:我事先检查了liveQuery,它是我需要的那种function,但能够在执行事件回调时修改DOM元素。 因此,我不仅需要附加事件,还需要在元素创建时修改DOM。 例如:每当创建一个new时,它应该用p,label和input标签填充(如果更换,则更好)

您可以使用DOM Level 3事件,例如DOMNodeInserted 。 这可能看起来像:

 $(document).bind('DOMNodeInserted', function(event) { // A new node was inserted into the DOM // event.target is a reference to the newly inserted node }); 

作为替代方案,您可以签出.liveQuery 帮助 jQuery插件。

更新

在参考你的评论时,看看http://www.quirksmode.org/dom/events/index.html ,只有不支持它的浏览器是这个世界的Internet Explorers(我猜IE9至少做到了) )。

我不能说性能,但它应该表现得相当好。