This topic created in 5407 days ago, the information mentioned may be changed or developed.
伪代码如下:
<input id="btn1" type="submit" value="提交" />
$("btn1").click(function(){
alert('a');
});
$("btn1").click(function(){
alert('b');
});
上面两个事件都会响应,请问,怎么处理才能只触发其中一个事件,两个方法都要有。
7 replies 2014-05-26 16:57:08 +08:00  | | 1 reus Jul 23, 2011 “只触发其中一个事件,两个方法都要有”什么意思? 如果想顺序可以用queue机制 |
 | | 2 sparklo Jul 23, 2011 click事件只有一个, 你不加条件判断怎么可能想让他区别两种回应呢? |
 | | 3 chone Jul 23, 2011 在不需要的触发的时候删除掉handler
var handlerA= function() {alert('a');}; var handlerB = function() {alert('b');}; var btn = $("btn1");
// fire a btn.bind('click', handlerA); // fire b btn.unbind('click', handlerA); btn.bind('click', handlerB);
或者加一个条件变量,当'click'事件被触发的时候再判断是否执行handler var fireA = true; var handlerA = function() {if (!fireA) return; alert('a');}; var handlerB = function() {fi (fireA) return; alert('b');}; // fire handler b fireA = false; |
 | | 5 ashchan Jul 23, 2011 如果你只是想让每次点击时,只响应两个回调中的一个(换句话说两个方法轮流执行),那么只要用toggle就行:
$("#btn1").toggle(function(){ /*handler 1*/ }, function(){ /*handler 2*/ }); |
 | | 6 yangg Jul 23, 2011 $("#btn1").click(function(e){ alert('a'); e.stopImmediatePropagation(); }); |
 | | 7 Honwhy May 26, 2014 @ ashchan 我有一个场景,由于第三方元素的影响,toggle所要表现的顺序被打乱了。 |