当我在侧边栏上选择页面时,我正在尝试使用下一个脚本加载内容.这个脚本没有问题:
if(Modernizr.history) { var newHash = "",$wrapperTag = $("#main-content"),contentTag = '#main-content-inside',activeClass = 'active'; $("#sidebar").delegate("a","click",function() { _link = $(this).attr("href"); history.pushState(null,null,_link); loadContent(_link); return false; }); function loadContent(href){ $wrapperTag .find(contentTag) $wrapperTag.load(href + " "+contentTag+" ",function(response,status,xhr) { $("#sidebar a").removeClass(activeClass); $('#sidebar a[href$="'+href+'"]').addClass(activeClass); $("#menu").bind('click',function(){ $(this).showSidebar(); }); }); }
这个脚本没有probs,我的HTML模板看起来像这样:
HTML模板
<div id="sidebar"> <nav> <ul class="ul-vert"> <li><a href="page1.html">Page 1</a></li> <li><a href="page2.html">Page 2</a></li> ... <li><a href="pageN.html">Page N</a></li> </ul> </nav> </div> <div id="main-content"> <div id="main-content-inside"> <p id="menu">Show / Hide Sidebar</p> <div class="text desc">(Content)</div> </div> </div>
我有一个标签,它是p#menu作为显示或隐藏侧边栏的选项.这工作直到我加载任何页面然后我失去了点击事件.
基本上我的问题是:
更改内容后为什么jQuery会丢失事件?
我可以再次在loadContent函数上再次添加p#menu,但我想了解jQuery的工作原理.
谢谢!
解决方法
$('.fatherDiv').on('click','.childDiv',{},function(e){ //insert your code here })
这将不仅在现在,而且在将来将绑定后的事件处理程序绑定到DOM选择器元素(选择器添加到DOM).现在即使特定的选择器被添加或替换为新的DOM元素,也会触发click事件.
阅读此处了解更多信息:
http://blog.revathskumar.com/2013/10/jquery-on-avoid-losing-event-binding-for-ajaxed-contents.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。