Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
理解.bind()JQuery_Jquery - Fatal编程技术网

理解.bind()JQuery

理解.bind()JQuery,jquery,Jquery,我正在使用此函数禁用hiperlink,但我不太了解该函数的真正功能,我的疑问是下一个,我有此函数: function bindPrevent(e) { e.preventDefault(); return false; } 当用户单击链接时,我会执行以下操作: function disableButton(f) { if(f) { $('.btnOk[id!="link_lkDelete"]').each(function(){

我正在使用此函数禁用hiperlink,但我不太了解该函数的真正功能,我的疑问是下一个,我有此函数:

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”在我居住的区域是“呕吐”。可能要将其改为“摆弄”或其他内容;)