我对此主题进行了研究,但找不到我的问题的解决方案。DOM 是否需要刷新,或者这背后是否有任何其他逻辑。
我有一个锚标签,点击它会调用一些随机的 jquery 函数。如果我在加载页面时加载锚元素,则该函数执行得非常好,但是如果我使用另一个元素的某些事件加载该锚,导致它被另一个函数加载。然后单击该锚元素后,所需的 jquery 功能不会出现。解决方案请。
我对此主题进行了研究,但找不到我的问题的解决方案。DOM 是否需要刷新,或者这背后是否有任何其他逻辑。
我有一个锚标签,点击它会调用一些随机的 jquery 函数。如果我在加载页面时加载锚元素,则该函数执行得非常好,但是如果我使用另一个元素的某些事件加载该锚,导致它被另一个函数加载。然后单击该锚元素后,所需的 jquery 功能不会出现。解决方案请。
页面加载时,您似乎已通过 javascript 将函数附加到锚元素,可能是这样:
$(#yourAnchorElement).click(yourFunction);
将事件附加到单个或多个 DOM 元素时,我们可以选择为当前元素或当前和未来元素执行此操作。
您也应该使用这些方法来为未来的元素保留事件。
附加一个适用于动态加载元素的事件的好方法是(注意你的 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/。
在较新的版本中不建议使用 jquery 实时事件处理程序...而是使用 jquery 委托。
这将取决于您是否:
A - 将点击事件设置为 HTML 中的属性(这应该始终有效)
B - 用 JQuery 绑定事件(这只会绑定到已经渲染的元素,应该嵌套在 JQueries 页面准备函数中)
对于上述两种方法,最好的方法是使用 JQueries Delegate 方法,有关更多信息,请参阅http://api.jquery.com/delegate/。