$("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>');
})
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)