Jquery 合并单击事件处理程序

Posted

技术标签:

【中文标题】Jquery 合并单击事件处理程序【英文标题】:Jquery combine on click Eventhandler 【发布时间】:2022-01-24 05:31:49 【问题描述】:

我有一个小链接例程,它拦截网络上的每个链接并相应地处理它。

如何将以下两个 jquery 事件处理程序合并到一个 EventHandler 中?

$("body").on("click", "a", function (e) 
 //call function
;



// mobile links
$("#Mobile a").on("click", function (e) 
 //call same function
);

【问题讨论】:

请看这个link,我觉得和你想要的一样 这不是涵盖了Body的所有anchors吗? $("body").on("click", "a", function (e) ??? @KHIMAJI VALUKIYA - 不,我无法触及身体的所有锚点。正是这里是我的问题。实际上,#Mobile 链接稍后会在 DOM 中加载。并且 $("body") 没有到达他们 :-( 在正文中添加该锚点后,您需要再次初始化该点击事件,如果您有多个锚点,请尝试使用 Class 或其他选择器 【参考方案1】:

试试这个:

$('body, #Mobile a').on('click', someFunction);

$('body').add('#Mobile a').on('click', someFunction);

现在是函数部分

function someFunction()
    // Your code here

【讨论】:

【参考方案2】:

类型1:你可以定义函数,然后作为参数传递

function myClickEventHandler(e) 
  


$("body").on("click", "a", myClickEventHandler);

// mobile links
$("#Mobile a").on("click", myClickEventHandler);

类型2:您可能想更新选择器(通过逗号分隔传递多个选择器)

$("body").on("click", "a, #Mobile a", function (e) 
 //call function
;

【讨论】:

Type 2 对我不起作用。到目前为止,我无法使用 $("body") 语句来获取 äMobile 锚点。我想,它的原因#Mobile 将很晚才加载到 DOM。 Type 1 是我现在使用的解决方案,但我不喜欢...

以上是关于Jquery 合并单击事件处理程序的主要内容,如果未能解决你的问题,请参考以下文章

JQuery进阶

如何在 jQuery 中处理按钮单击事件?

jquery如何阻止事件冒泡

JavaScript&jQuery.HTML事件处理器

在 jQuery 中使用 this 作为事件处理程序切换类

R Shiny - 使用jQuery和onclick事件处理程序删除UI