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加载和插入元素的情况下调用它。