var insertPrivilegeB=
{
execute:function()
{
$.ajax
({
url: "/SSH/ajaxGetPrivilegeBAction",
type:"POST",
dataType:"json",
success:function(ajaxData)
{
var map=getPrivilegeBMap(ajaxData);
/**这里绑定了事件,调用下面的reflesh时候alert("hh")将被调用两次*/
$("#privilegeManage").off("click",".open_or_close_privilegeB")
.on("click",".open_or_close_privilegeB",function (event)
{
alert("hh");
insertPrivilegeB.openOrClosePrivilegeB($(this),map);
});
},
error:function(data)
{
alert("数据异常!");
}
});
}
};
var reflesh=function()
{
insertPrivilegeB.execute();
};
/****两个方法的运行:刚刚开始直接运行insertPrivilegeB.execute();运行正常。
alert("hh")只执行一次。当点击刷新按钮则执行reflesh,此时alert执行两次,
说明事件重复绑定了,但是这该怎么解决?是我的代码有问题?
*****/
前几天在看《jquery基础教程》,看到事件委托的时候,关于live()方法讲的不是很详细,就去搜了一下关于live()和delegate()的。 然后在一处看到live()已经被移除了,囧,然后去看了最新的jq源码,果然被移除了,现在是1.9.1版本,不知道live()是在之前哪个版本被移除的,惭愧啊,之前都没留意。 看源码发现bind()和delegate()都是由on()实现的。on()......
答案就在这里:jQuery事件绑定.on()
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?
直接用.click()不要on()
刷新按钮先unbind click再绑定click