如何在jQuery的live()附加元素时运行代码吗?

时间:2010-04-20 09:35:55

标签: javascript jquery dom javascript-events

我想在附加一组元素后立即运行一些代码。 jQuery.live()允许您将事件处理程序绑定到元素,即使它们是稍后创建的。但AFAIK没有合适的方法来做类似以下的事情:

$("some selector").live("attach", function() { $(this).whatever(); });

我该如何做到这一点?

编辑:澄清;我想在新创建的元素上运行动画。除了在首先追加之前动画是无用的事实之外,在某些浏览器中backgroundColor属性不会从CSS类继承,直到它附加到DOM。这会导致我的动画代码中断。

所以我想创建这个元素,以某种方式将动画应用于附加后运行然后返回它。

3 个答案:

答案 0 :(得分:2)

答案 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);