jQuery live()for removeAttr()?

我需要在可能通过ajax加载的元素上使用removeAttr。 有没有办法自动执行此操作,类似于使用live()自动绑定事件的方式?

注意:我无法控制正在执行ajax调用的JavaScript库。

这为现在和未来的所有元素创建了一个具有“不良属性”的新事件,接下来我们将触发它以触发并完成其工作。

$("mySelector").live("myRemoveAttrEvent", function(event){ $(this).removeAttr("myAttr"); }); 

关于成功的ajax调用的function

 // quick jQ ajax, the important part is on success $("div").load("url", function(data, status, xhr){ ..do work.. // this is the important part $("mySelector").trigger("myRemoveAttrEvent"); }); 

如果你无法控制所有ajax,你必须捎带导致ajax触发的用户事件……这很脏://你认为导致无法控制的ajax触发的事件,例如改变

 $("*").change()(function(event){ $("mySelector").trigger("myRemoveAttrEvent"); }); 

您可以使用$.ajax请求的complete选项,如下所示:

 $.ajax({ ...... complete:function(){ $('selector').removeAttr('attribute here'); } }); 

你正在寻找的是在加载这些元素时处理这个问题,这将是你的AJAX调用的success回调:

 $.ajax({ // your details success: function(html){ $('a', html).removeAttr('title'); $('body').append(html); } }); 

更新 :如果您无法控制进行AJAX调用的任何内容并且它不提供任何挂钩或回调,则您需要找到另一个要绑定的事件才能执行此操作。 根据这些元素插入页面的方式以及您正在使用它们的确切方式,您可以使用这样的委托 (只是猜测):

 $('body').delegate('p', 'load', function(){ /* remove attr */ }); 

我不知道在修改DOM或单个元素时触发的任何事件。 您可以尝试load ,但我不认为在AJAX加载和插入元素的情况下调用它。