页面加载后自动执行.on()函数
我使用$("#container").on("click", contentEffects);
在ajax调用之后使一些jquery代码再次工作。 但是,我希望.on()
函数可以在页面加载后立即自动执行,并且没有click
事件。 那可能吗?
请看看我的网站和javascript文件:
http://peters-playground.com/blog.html
https://github.com/P233/p233.github.com/blob/master/js/script.js#L30-L78
当ajax加载新post时,我必须点击post内容才能启用javascript,我还需要点击两次按钮才能使其正常工作。 这真的很烦人。 我该如何避免这个问题?
谢谢!
你可以在你的链中运行它:
// Anonymouse function passed into $ will be invoked // When the document has loaded $(function () { // Immediately after binding the click handler // We invoke the click event on #container $("#container").on("click", contentEffects).click(); });
听起来你应该考虑的是事件委托 ,并将事件绑定到页面加载时出现的最近的静态祖先元素。 例如,假设我们有一个由AJAX动态填充的项目列表:
- First item on load.
您可能希望列表项在您单击时执行某些操作,因此您可能会将处理程序绑定到其click事件:
$("#items li").on("click", function () { alert( $(this).html() ); });
这适用于页面上已有的任何列表项,但正如您所遇到的那样,新项目不会将其绑定到它们,因此在您的AJAX之后,您必须将其重新绑定到所有新列表项。
我们可以绑定到始终存在的ul
元素,而只是侦听源自li
元素的事件,而不是这样做:
$("#items").on("click", "li", function () { alert( $(this).html() ); });
现在我们的事件永远不需要重新绑定,因为#items
加载了页面,并且永远不会去任何地方。 将捕获并处理从嵌套列表项(无论是否通过AJAX加载)冒泡到此元素的任何单击事件。
在页面加载后使用此代码执行.on函数。
$(document).ready(function() { $("#container").on("click", function() { //Your Code }); });