Javascript .on()在一组<;李>;元素
当我的Javascript .on()在一组<;李>;元素,javascript,jquery,html,Javascript,Jquery,Html,当我的悬停时,我尝试使用.on()jQuery函数调用一些东西 当我尝试这样做时: $("body").on({ mouseenter: function () { console.warn('dansl\'body'); //stuff to do on mouse enter }, mouseleave: function () {
悬停时,我尝试使用.on()jQuery函数调用一些东西
当我尝试这样做时:
$("body").on({
mouseenter: function () {
console.warn('dansl\'body');
//stuff to do on mouse enter
},
mouseleave: function () {
console.warn('sorti');
//stuff to do on mouse leave
}
});
当我的身体悬停时,我会收到信息。但当我试着用“李”来代替“身体”时,它就不起作用了。如何将.on()应用于一组
PS:My
是在文档加载后生成的。您需要事件委派才能将事件附加到动态添加的dom:
更新:
.hover()
不能与.on()
一起使用。您可以改为使用:
$("body").on({
mouseenter: function () {
console.warn('dansl\'body');
//stuff to do on mouse enter
},
mouseleave: function () {
console.warn('sorti');
//stuff to do on mouse leave
}
}, "li"); //pass the element as an argument to .on
试试这个:
$(document).on("mouseenter", "li", function() {
// cause some mayhem here
}).on("mouseleave", "li", function() {
// use this to restore order
});
发生的情况是,事件在元素存在之前就被绑定,因此它们不会接收事件。当您像这样在文档上绑定它时,它将出现在与选择器匹配的所有元素中,即使是动态创建的元素。为了总结此处提供的所有解决方案,由于您的目标元素是动态加载的,因此您最好在创建元素后使用,而不是绑定事件 对于单个事件,方法上的
的第二个参数用作目标元素的选择器:
$('ul').on('click', 'li', function() {
// "dynamic" <li> element is clicked
});
$('ul')。在('click','li',function()上{
//单击“动态”元素
});
对于多个事件,可以使用以下方法:
$('ul').on({
mouseenter: function() {
// <li> receives 'mouseenter'
},
mouseleave: function() {
// <li> receives 'mouseleave'
}
}, 'li');
$('ul')。在({
mouseenter:function(){
//收到“mouseenter”
},
mouseleave:function(){
// 收到“mouseleave”
}
}"李",;
为了使代码运行更快,您应该将事件绑定到目标元素最近的静态父元素
演示:是将.on代码包装在文档就绪块中?还是动态添加了li
元素?您需要使用.on代码不是包装在就绪块中。而且,正如我在帖子中所说,li是在之后生成的,动态添加yes。我建议查找最接近的
静态父元素,使代码运行更快。它不起作用。。。没有错误,没有。两个问题:1)hover
映射到mouseenter
和mouseleave
,而不是mouseover
和mouseout
,2)。@FrédéricHamidi:谢谢……我真的不知道。好的,谢谢。正如大家所说,也许你应该在你的帖子中用ul
替换body
。用于访问直接父级。对于未来的用户,他们可能会有同样的问题。这是可行的,但您可能应该使用更接近li
的父级,而不是document
Perfect!这是工作!非常感谢。没有理由将单个事件拆分为对.on()
的单独调用;该函数支持以键/值对的形式传递带有事件/处理程序的对象,以及用于委托的选择器。换句话说,对问题中代码的唯一更改应该是在.on()
调用中添加“li”,以及调用它的更具体的选择器(静态
元素)。尽管Sam Creamer有一点,绑定到li的最直接父元素更合适,执行速度更快。然而,我很懒,并且倾向于使用文档来处理所有事情。这是“坏”的做法,但并不可怕。我不能接受你的答案作为解决办法。你只是复制粘贴了别人的回答。附言:否决票不是我投的…@Superdrac不是真的。这个解决方案并不是唯一的,因为这个问题相当琐碎,在StackOverflow上被问了数百次。此外,我总结了有关活动授权的所有事实,并通过演示提出了可行的解决方案,与周围提供的错误或过度解决方案形成对比。