0

There's an implementation of a callback to a click event for a link. I can't change or delete this code.

I want to call that link's click event callback when someone clicks a button (for example). So I decided to use .trigger('click'). It works fine.

But now, I don't want anything to happen when the user clicks the link. I was thinking of using .unbind() but doing that will make the .trigger('click') not work since the link has been unbinded.

So basically, I want to 'reuse' the callback of the link's click event without copy pasting the code. How do I do that?

4

2 回答 2

0

抱歉错过了这部分:

我无法更改或删除此代码。

解绑按钮的点击事件:

$("#mybutton").off("click");

如果按钮单击中的代码是匿名函数,则复制该代码并将其添加到页面中,这样您就可以在不触发事件的情况下调用它:

$("#mybutton").on("click",function(){
//copy this part and add it as a new function to be called.
});

如果按钮单击中的代码是函数调用,那么您可以调用该函数:

$("#mybutton").on("click",someFunction);

可以这样称呼:

someFunction();

如果您有现有的代码,您无法更改依赖于 $("#mybutton").trigger("click") 那么您可以将该按钮的显示设置为无,这样任何人都无法单击它,将事件处理程序留在原处并且(如果按钮需要在页面上)在页面上添加另一个没有点击处理程序的按钮。

于 2013-05-04T02:25:22.683 回答
0

这应该适合你:

// Get the first click event on the link
var clickEvent = $._data( $("a.mylink")[0], "events" ).click[0];

// Unbind the click event on the link
$("a.mylink").unbind('click');

// Attach the click event to the button
$("button").click(clickEvent);

这是一个jsFiddle.

此代码获取使用 HTML 元素注册的第一个单击事件并将其粘贴在变量中,然后取消绑定事件,并将事件附加到按钮。因此,如果在 HTML 元素中注册了多个事件,则必须进行一些循环$._data( $("a.mylink")[0], "events" ).click——返回所有注册的点击事件——以找出要抓取的事件。

如下所述,第一行是使用非公开支持的内部 jQuery 接口,它可能会因版本而异。它适用于版本 1.8 到至少当前的 1.9 版本。

于 2013-05-03T22:20:27.127 回答