jquery监听鼠标点击事件 有很多个<span>,但想点击了一个,让剩下的都变

jquery监听鼠标点击事件 有很多个<span>,但想点击了一个,让剩下的都变,第1张

$("list span")click(function () {
                 $("list span")attr("class", "seach");//所有都变青色
                 $(this)attr("class", "Selected");//自己变灰色
            });

首先你要理解一点,jQuery 的绑定事件是能够叠加的,比如对一个div 绑定的多次 blur 事件,在触发的时候 多个绑定在div 上的blur 事件都会执行;
<div id="demo'></div>
$( '#demo' )bind( 'blur', function(){} );
$( '#demo' )bind( 'blur', function(){} );
$( '#demo' )bind( 'blur', function(){} );
比如以上对 demo 绑定了 3 次blur 事件,那么在触发blur 事件的时候 3 个都会执行;
想要只执行最后一次绑定的时间而忽视之前绑定的事件,就要在下一次绑定事件之前先解除原先绑定的事件,再绑定新的事件
<div id="demo'></div>
$( '#demo' )bind( 'blur', function(){
$( '#demo' )unbind( 'blur' ); // 在执行完 blur 事件后解除绑定的事件或者在其他的地方解除绑定也行;
} );
原理说多了,其实楼主的代码改法很简单,
$('#b'+id1)bind('blur',function(){
$('body')append('<div id="test">执行到节点2</div>');
})
把这个事件绑定写到 click 外面去,然后在 click 里面写上模拟 blur 事件的代码就可以了,这样就保证了blur 事件只绑定了一次,而不是在每次click 之后叠加绑定了新的事件
$("areply")click(function(){
//点击'回复'触发
//两处append调用都是供测试用,项目中为对应处其他功能代码
$('body')append('<div id="test">执行到节点1</div>');
$('#b'+id1)blur(); // 执行绑定的 blur 事件
return false;
})
$('#b'+id1)bind('blur',function(){
$('body')append('<div id="test">执行到节点2</div>');
})


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13401196.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-29
下一篇 2023-07-29

发表评论

登录后才能评论

评论列表(0条)

保存