让.on()
工作时遇到一些问题。我的网站是here。
如果您查看www.eliteweb-creation.co.uk/dev/js/nav.js,我正在mouseenter
& mouseleave
$('a.left.active')
个事件处理程序
为了将来查看此帖子的任何人,我已将代码添加到jsfiddle:
锚点在点击时动态添加.active
,因此使用.on()
代替.click()
,以便jQuery检测到dom更改并添加事件处理程序。
在添加.on("click")
类之前我的.active
锚定工作正常,问题似乎是.on()
未检测到类更改。
感谢任何和所有帮助。
答案 0 :(得分:4)
使用.on()
并不能让你的代码检测到变化。
您必须从不更改的祖先元素委派click事件处理程序:
$('.nav').on('click', 'a.active', function(e) {
// Put your code here...
});
中详细了解相关信息
答案 1 :(得分:0)
.on
只会在运行时附加符合标准的元素,这就是为什么他们建议将这些定义放在document.ready
中。
来自jQuery API:
事件处理程序仅绑定到当前选定的元素;在您的代码调用.on()
时,它们必须存在于页面上除非再次运行.on
定义,否则不会重新评估新修改的元素。您可以更广泛地定义并根据需要检查其他类:
$('a.left').on("click", function(event){
if($(this).hasClass('active')) {
// Do fancy stuff here
}
});
编辑:代码清理