我对mouseenter/mouseleave函数有一些问题。
请看一下我的代码;
$(".elms").live(
{
mouseenter: function (e)
{
$("a").click(function()
{
alert('test');
});
},
mouseleave: function (e)
{
//do something else
}
});html:
<div class='elms'>test [ function says `test` ]</div>
<div class='elms'>test [ function says `test` and `test` ]</div>
<div class='elms'>test [ function says `test` and `test` and `test` ]</div>
<div class='elms'>test [ function says `test` and `test` and `test `test` and `test` ]</div>这将重复,甚至90个元素,我想杀死函数的休假,并作出新的。就像这样:
var killIt = $(".elms").live(
{
mouseenter: function (e)
{
$("a").click(function()
{
alert('test');
});
},
mouseleave: function (e)
{
killIt.die();
}
});有什么想法吗?
[小提琴:http://jsfiddle.net/29f3P/ ]
发布于 2014-05-20 21:11:10
我不确定这是否是您想要的,在这种情况下,每次您在.elms元素上鼠标时都会添加一个侦听器。如果您真的想在每次鼠标移动时添加一个侦听器,并且您不希望看到重复的行为,可以使用绑定和取消绑定来设置鼠标事件,如所描述的这里:
$(".elms").live({
mouseenter: function (e) {
$("a").bind("click", function(){
alert('test');
});
},
mouseleave: function (e) {
$("a").unbind("click");
}});
我修改了你的小提琴这里:
发布于 2014-05-20 21:14:37
如果每次都必须销毁侦听器,请尝试jQuery.one(),这将在第一次调用之后自动销毁侦听器。
http://api.jquery.com/one/
如果侦听器不一定只运行一次,请尝试jQuery.off()来解除侦听器的绑定。
http://api.jquery.com/off/
https://stackoverflow.com/questions/23769973
复制相似问题