理解.bind()JQuery
我正在使用此函数禁用hiperlink,但我不太了解该函数的真正功能,我的疑问是下一个,我有此函数:理解.bind()JQuery,jquery,Jquery,我正在使用此函数禁用hiperlink,但我不太了解该函数的真正功能,我的疑问是下一个,我有此函数: function bindPrevent(e) { e.preventDefault(); return false; } 当用户单击链接时,我会执行以下操作: function disableButton(f) { if(f) { $('.btnOk[id!="link_lkDelete"]').each(function(){
function bindPrevent(e)
{
e.preventDefault();
return false;
}
当用户单击链接时,我会执行以下操作:
function disableButton(f)
{
if(f)
{
$('.btnOk[id!="link_lkDelete"]').each(function(){
$(this).bind("click",bindPrevent);
});
}
else
{
$('.btnOk[id!="link_lkDelete"]').each(function(){
$(this).unbind("click",bindPrevent);
});
}
}
问题是,如果链接有另一个click处理程序,我绑定了一个新的,那么哪个处理程序被称为???,JQ使用类似于处理程序堆栈的东西并执行最上面的一个处理程序
问题是,如果链接有另一个click处理程序,我绑定了一个新的,那么哪个处理程序被称为???,JQ使用类似于处理程序堆栈的东西并执行最上面的一个处理程序
简单的回答是,他们都被称为。他们将按照分配的顺序被调用
在皮肤下,jQuery只是使用javascripts默认的事件附件机制,并进行了一些调整,以确保它在所有浏览器中都能工作。jQuery执行与事件相关的所有处理程序 这是一个很好的解释
通过使用preventDefault,您将阻止事件执行其默认操作,在本例中,首先在超链接之后,我建议使用.on()而不是.bind(),因为.on意味着替换所有绑定方法(bind、live等) 据我所知,bind所做的是监视事件(如“click”或“mouseenter”),然后在事件发生时执行附加到它的任何函数 此外,如果您使用return false;您不应该需要preventDefault();因为return false同时充当preventDefault和stopPropagation 您也可以将上述内容写成:
function disableButton(f)
{
if(f)
$('.btnOk[id!="link_lkDelete"]').click(function(){
return false;
});
}
正如其他人所说,这两个处理程序都将被调用。下面是一个例子 从jQuery1.7开始,.on()方法是将事件处理程序附加到文档的首选方法。“Fettling”在我居住的区域是“呕吐”。可能要将其改为“摆弄”或其他内容;)