作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
$('a').click(function() {
_link = $(this).attr('href');
loadContent(_link);
return false;
});
function loadContent(href){
$('#content').load(href + ' #content > *)
}
我有所有 <a>
与 .click()
绑定(bind)这只会改变 #content
的内容.然而,新<a>
从新#content
不使用以前的 .click()
功能。我怎样才能重新绑定(bind)它?
在.load()
之后再次添加函数似乎有效
function loadContent(href){
$('#content').load(href + ' #content > *);
$('a').click(function() {
_link = $(this).attr('href');
loadContent(_link);
return false;
});
}
但这会不会弄乱已经绑定(bind)的 `s' 并导致它循环运行?
最佳答案
使用event delegation将事件绑定(bind)到动态添加的元素(在本例中为 a
s):
$(document).on('click', 'a', function() {
_link = $(this).attr('href');
loadContent(_link);
return false;
});
事件委托(delegate)通过监听冒泡到一个不变的祖先的事件来工作(如果没有方便的话,document
是最好的默认值,不要使用 'body'
作为它有与样式相关的点击错误)。 然后将 jQuery 选择器应用于气泡链中的元素,然后将您的函数应用于引起事件的匹配元素。优点是元素只需要在事件时间和现在注册处理程序时存在。
关于javascript - 如何在 .load() 之后重新绑定(bind) .click() 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26005701/
我是一名优秀的程序员,十分优秀!