我想在附加一组元素后立即运行一些代码。 jQuery.live()
允许您将事件处理程序绑定到元素,即使它们是稍后创建的。但AFAIK没有合适的方法来做类似以下的事情:
$("some selector").live("attach", function() { $(this).whatever(); });
我该如何做到这一点?
编辑:澄清;我想在新创建的元素上运行动画。除了在首先追加之前动画是无用的事实之外,在某些浏览器中backgroundColor
属性不会从CSS类继承,直到它附加到DOM。这会导致我的动画代码中断。
所以我想创建这个元素,以某种方式将动画应用于附加后运行然后返回它。
答案 0 :(得分:2)
我建议您查看DOMNodeInserted和DOMNodeRemoved。
这也可能有用:Detecting When DOM Elements Have Been Removed With jQuery
答案 1 :(得分:1)
以跨浏览器兼容的方式很难做到。我必须实现类似的东西,并且需要使用@Makram建议的变异事件(DOMNodeInserted,DOMNodeRemoved)和setInterval回退方法(简单地轮询更改) - 如果其中一个突变事件,setInterval就会停止被解雇了,因为你可以假设事件有效并且你不需要轮询。
另外值得注意的是live()似乎并不总是在IE中工作,所以我在某些情况下手动重新绑定事件(当然首先取消绑定!)
答案 2 :(得分:0)
AFAIK在dom更改时,jQuery中没有事件被触发。您需要在新附加的元素上运行代码,一旦将其传递给jquery就可以完全查询,例如
var $span = $('<span>my new document fragment</span>');
$span.css('what','ever');
$('div').append($span);