jQuery click(false) 结合一个函数

Posted

技术标签:

【中文标题】jQuery click(false) 结合一个函数【英文标题】:jQuery click(false) combined with a function 【发布时间】:2011-03-12 23:10:28 【问题描述】:

我想防止“#”被使用,因为我正在使用 jQuery 来通过点击插件做其他事情......

<a href="#" id="mylink">My Link</a>

<script>
    $('#mylink').somePlugin().click(false);
</script>

每当我需要阻止默认点击时,上述方法都能很好地工作。

现在我在下面有这样的东西,我想阻止默认的点击行为

<a href="#" id="mylink">My Link</a>

$('#mylink').click( function () 
    //  my code in here
);

我只是不确定在哪里/如何将 click(false) 合并到上面的代码中。我尝试过的几件事都不起作用。

我知道...我感觉像个新手问这个问题。

谢谢!

【问题讨论】:

【参考方案1】:

你需要做的:

$('#mylink').click( function (e) 
        e.preventDefault();

        // the code here
    );

【讨论】:

我正在使用它,但认为只有一种方法可以合并点击(错误)。谢谢! 不需要合并 click false,preventDefault 是一个符合标准的函数,用于此目的,并且在 jQuery 中使用得益于其跨浏览器兼容性保险(与所有 jQuery 功能一样大) ,所以没有必要使用其他任何东西,除了正如所指出的,stopPropagation 来阻止事件冒泡,即如果你显示一个隐藏的嵌套 ul,父 li 也将被显示(如果隐藏)。 可以简单介绍一下click(false)吗?【参考方案2】:
$('#mylink').click( function (e) 
    return false;
);

【讨论】:

e.preventDefault();是正确的方法。如果你返回 false,你也会停止事件冒泡。 @我知道吗。有人对你投了反对票,我在问为什么。 (我投票支持) 我也没有投反对票,但我正在阅读为什么不在这里使用“return false”...fuelyourcoding.com/jquery-events-stop-misusing-return-false @Bjarki return false 也是可以接受的。它更短,并且不需要您将事件对象指定为参数。【参考方案3】:

不同的浏览器处理这个问题的方式略有不同,但 jQuery 会尽力满足您的要求。您应该了解三件事,并且至少应该完成其中的前两件事,以防止在尽可能多的浏览器中出现正常的点击行为:

    点击处理程序末尾的return false;(如 Am suggested)将停止许多浏览器(包括 Internet Explorer 和 Google Chrome)中链接的常规点击操作。 return false; 也将停止事件传播,这可能是也可能不是你想要的。这是常规的浏览器行为,与 jQuery 没有任何关系。

    e.preventDefault();,因为 Liam 的 suggested 是防止触发默认操作的 jQuery method。 “例如,单击的锚点不会将浏览器带到新的 URL。” 这只会影响当前项目

    e.stopPropagation(); 是另一个防止事件冒泡的jQuery method。例如,如果您在 div 中有一个锚点,并且该 div 挂钩了一个点击事件,那么即使您停止锚点,也会触发该 div 的点击事件 - 除非您调用此方法。

数字 2 将涵盖几乎所有的浏览器,而将 1 和 2 组合起来,您或多或少地涵盖了所有浏览器。仅当您不希望事件在 DOM 树中冒泡时,数字 3 才是必需的,但我养成了将它放在那里的习惯,因为大多数情况下,如果我想阻止对单击的元素的默认操作,我不希望任何事情发生,除了这个特定的处理程序中的代码。

【讨论】:

@Thomas preventDefaultstopPropagation 不是 jQuery 方法,但它们是由 DOM Events standard 定义的(它们已经存在了一段时间)。请注意,jQuery 对事件对象进行了规范化,因此这两种方法可以在所有浏览器中使用。 是的——很好的解释。那么 .click(false) 在哪里适合这一切呢?我希望通过使用它,我只是让 jQuery 处理它。 @Sparky click(false) 根本不适合这个。不要使用它。 click 方法应该没有参数或函数参数。不要将false 值传递给它。 @Šime Vidas - 我从 jQuery 插件开发人员那里得到 click(false),他说可以与 1.4.2 以上版本的 jQuery 一起使用。你有什么我可以阅读的更多参考资料吗? @Šime:您自己说过:jQuery 规范化了事件对象,因此它们是 jQuery 对 jQuery 定义的对象定义的方法。它们与某些 javascript 引擎中的原始方法具有相同名称的事实是另一回事;)

以上是关于jQuery click(false) 结合一个函数的主要内容,如果未能解决你的问题,请参考以下文章

jquery checkbox选中改变状态change和click事件

jquery checkbox选中改变状态change和click事件

谈一谈jquery中的事件处理

结合悬停和单击功能(jQuery)?

jQuery或者js保存文件到本地

从 jQuery 点击事件返回 false