将函数绑定到DOM中插入的元素? (隐含的?)

问题描述:

这可能是jquery的基础知识,但我无法找到一个解决方案之后大量的谷歌搜索。将函数绑定到DOM中插入的元素? (隐含的?)

如何将“非事件”附加到DOM中插入的元素? 对于事件,如点击,我们可以使用live()bind()。 例如,您会如何将tabs()addClass()初始化为新元素?

具体而言,我试图让tabs()在ajax加载对话框的内容中工作,但我认为正确的解决方案应该适用于任何情况。

我确实看到一个涉及$('body').mousemove()的伎俩,它确实有效,但它仍然对事件有约束力,显然是黑客行为。

例如,如何获得addClass()在新插入的表格行上触发?

我的意思是隐式做到这一点,这意味着我不想为每个向dom添加节点的事件写出具体的指令,我只是希望它“在后台运行”。

让我知道如果这需要澄清,我看到很多类似的问题,但没有帮助的答案。

编辑:简单的例子:一个页面调用$('a').addClass('highlight'),它在页面中的所有锚上工作。一个新的锚点然后通过jQuery动态添加到页面中,但不会添加该类。我试过各种各样的bind(),trigger()和change()方法,但是我恐怕我在吠叫错误的树。

+0

需要澄清... – Neal 2011-03-28 16:51:11

+0

到目前为止你做了什么? – Neal 2011-03-28 16:52:48

你需要看看livequery它可以让你的东西应用到新加入的元素

另外,如果您的添加元素,你可以做

$('body')append('<div>some content</div>').tabs(); 

或类似的东西

+0

我确实遇到过livequery,但并不确定这是我以后的事情,我要快速浏览一下,谢谢。 – 2011-03-28 16:58:52

+0

@Madmartigan我稍微修改了我的答案 – mcgrailm 2011-03-28 16:59:55

+0

这正是我所追求的!非常感谢,从现在开始,这个脚本将成为我所有工作的核心组件。完美的作品。 – 2011-03-28 17:04:32

我知道我可能在这里与你的“非事件”规则相矛盾,但只是说你想要“触发”某种事物,你已经暗示某种事件。

在这种情况下,我可以建议jQuery自定义事件吗?您可能想要创建自定义事件,然后在代码中的某处手动触发它。它不是自动的(比如当你添加一行,BOOM,它会触发™),但这与我所描述的最接近的东西是可以想到的。

具体来说,你可能想看看jQuery的.bind().trigger()方法。