首页 新闻 会员 周边

jquery bind事件的问题

0
悬赏园豆:10 [已关闭问题]

我想在执行go函数时候给a邦定另外的函数,但是它却直接执行了?哪里的问题呢。难道邦定时必须执行一边被邦定的函数码?

<div id="Test"><a href="#" onclick="go()">打开</a></div>

 

function go()

{

$("#Test a").text("关闭").bind("click",function(){close();});

}

function close()

{

alert("关闭了");

}

 

红尘中迷茫的主页 红尘中迷茫 | 初学一级 | 园豆:60
提问于:2009-09-15 17:44
< >
分享
其他回答(2)
0

click事件上可以绑定多个函数,这形成一个链,如果你绑定了a和b两个函数,则执行过程是这样的:

click -> 找到a -> 执行a -> 继续找 -> 找到b -> 执行b

所以你现在的过程其实是这样的:

click -> 找到go -> 执行go -> 添加了close -> 继续找 -> 找到了close -> 执行close

因为在go的过程中把close加到了事件函数链上,所以在go执行完后继续延着链向下找就执行了close

可以考虑使用setTimeout来做,或许能解决这个问题

$('#Test a').text('关闭');

setTimeout(function() {

  $('#Test a').bind('click', function() { close(); });
}, 0);

Gray Zhang | 园豆:17610 (专家六级) | 2009-09-15 21:02
0

可以先unbind的一下,然后再bind

Code

Cheese | 园豆:509 (小虾三级) | 2009-09-16 14:18
0

顶上

geniushuai | 园豆:145 (初学一级) | 2009-09-24 14:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册