这可能是jquery基础知识,但经过谷歌搜索后我找不到解决方案。
如何将“非事件”附加到DOM中插入的元素?
对于点击等活动,我们可以使用live()
或bind()
。
例如,您如何将tabs()
或addClass()
初始化为新元素?
具体来说,我试图让tab()在加载ajax的对话框的内容中工作,但我认为正确的解决方案应该适用于任何情况。
我确实看到了一个涉及$('body').mousemove()
的技巧,它确实有效,但它仍然绑定到一个事件,显然是一个黑客攻击。
例如,如何在新插入的表行上触发addClass()?
我的意思是隐式地这样做,这意味着我不想为每个将节点添加到dom的事件写出具体的指令,我只是想让它“在后台运行”。
如果需要澄清,请告诉我,我在SO上看到了许多类似的问题,但没有任何答案有帮助。
编辑:简单示例:页面调用$('a').addClass('highlight')
,适用于页面中的所有锚点。然后通过jQuery动态地将新锚添加到页面中,但不会添加类。
编辑:我尝试了各种bind(),trigger()和change()方法,但恐怕我正在咆哮错误的树。
答案 0 :(得分:3)
您需要查看livequery ,它会允许您将内容应用于新添加的元素
如果你添加了你可以做的元素
$('body')append('<div>some content</div>').tabs();
或类似的东西
答案 1 :(得分:0)
我知道我可能在这里违反你的“非事件”规则,但只是说你想要“触发”的东西,你已经暗示某种事件了。
在这种情况下,我可以建议jQuery自定义事件吗?您可能想要创建自定义事件,然后在代码中的某个位置手动触发它。它不是自动的(比如你添加一行,BOOM,它会激活),但这是我能用你所描述的内容最接近的东西。
具体来说,您可能希望查看jQuery的.bind()
和.trigger()
方法。