对于在jquery中动态添加的元素,不会发生click事件,尽管如果与页面一起加载它可以正常工作

时间:2013-09-25 10:14:33

标签: javascript jquery html events dom

我对这个主题进行了研究,但找不到我的问题的解决方案。 DOM是否需要刷新,或者是否有任何其他逻辑。

我有一个锚标记,在点击时会调用一些随机的jquery函数。如果我在加载页面时加载锚元素,该函数执行绝对正常,但如果我加载该锚点与另一个元素的某些事件导致它由另一个函数加载。然后在单击该锚元素后,所需的jquery函数不会显示。解决方案请。

3 个答案:

答案 0 :(得分:2)

似乎您在页面加载时通过javascript将函数附加到锚元素,也许这样:

$(#yourAnchorElement).click(yourFunction);

将事件附加到单个或多个DOM元素时,我们可以选择对当前和未来元素的当前元素执行此操作。

您应该使用这些方法来保存未来元素的事件。

附加一个适用于dinamically加载元素的事件的好方法是(注意你的jQuery版本):

$( selector ).live( events, data, handler );                // jQuery 1.3+
$( document ).delegate( selector, events, data, handler );  // jQuery 1.4.3+
$( document ).on( events, selector, data, handler );        // jQuery 1.7+

注意,从jQuery 1.7开始,像.click()这样的方法将始终适用于当前和未来的元素。

有关更多信息,请参阅http://api.jquery.com/live/

答案 1 :(得分:1)

不建议在较新版本中使用jquery live event handler ...而是使用jquery委托。

参考http://api.jquery.com/delegate/

答案 2 :(得分:1)

这取决于你是否:

A - 将click事件设置为HTML中的属性(这应始终有效)

B - 使用JQuery绑定事件(这只会绑定到已经渲染的元素,应该嵌套在JQueries页面就绪函数中)

对于上述两种方法,最好的方法是使用JQueries Delegate方法,有关详细信息,请参阅http://api.jquery.com/delegate/