代码之家  ›  专栏  ›  技术社区  ›  muhuk

当元素像jquery的live()那样与事件连接时,如何运行代码?

  •  5
  • muhuk  · 技术社区  · 15 年前

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

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

    我怎样才能做到这一点?

    编辑: 为了澄清,我想在新创建的元素上运行动画。除此之外,在某些浏览器中,先添加动画是没用的。 backgroundColor 属性在附加到dom之前不会从css类继承。这会导致我的动画代码中断。

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

    3 回复  |  直到 15 年前
        1
  •  2
  •   Makram Saleh    15 年前
        2
  •  1
  •   Graza    15 年前

    很难以跨浏览器兼容的方式进行。我必须实现一个类似的东西,并且需要使用@makram建议的突变事件(domnodeinserted,domnoderemoved)和setinterval回退方法(简单地轮询更改)-如果触发了其中一个突变事件,setinterval将停止,这样您就可以假定eveNTS工作,你不需要投票。

    另外需要注意的是,live()似乎并不总是在IE中工作,因此在某些情况下,我会手动重新绑定事件(当然是在首先解除绑定之后!)

        3
  •  0
  •   James Westgate    15 年前

    afaik jquery中没有在DOM更改时激发的事件。您需要在新附加的元素上运行代码,该元素一旦传递到jquery eg,就可以完全查询。

    var $span = $('<span>my new document fragment</span>');
    $span.css('what','ever');
    
    $('div').append($span);