从点击事件中移除一个函数

Posted

技术标签:

【中文标题】从点击事件中移除一个函数【英文标题】:Remove a function from click event 【发布时间】:2013-05-06 21:15:22 【问题描述】:

我对 JS 和 JQuery 非常陌生,所以请多多包涵。

我有一个下拉列表 - 如果您单击该列表,它将调用一个函数,该函数将打开一个浮动框 (div)。现在我们希望在登录时显示该框,断开其与点击事件的关系。但是,如果我只是将代码从函数中取出,请将其放在脚本中 - 就像其他 div 一样,我的页面要么呈现不正确,要么什么都不显示。

这是我的 html 中的内容:

<li><input class="option_btn room_search" value="Search for Room"/></li>

这是我的脚本的样子:

$("input.room_search").click(function() 
    //var roomSearch = new jabberwerx.ui.MUCSearchView(muc, demo_config.conferencealias); 

    var roomSearch = new jabberwerx.ui.MUCSearchView(muc, conferencealias); 

    roomSearch.event("actionComplete").bind(function(evt) 
        try 
            try this...

         catch (e) 
            alert("An exception occurred while trying to create/join the MUC room.\n Details: " +
                  e.message);
        
        roomSearch.destroy();
    );
    roomSearch.render().appendTo(".muc_search");
    roomSearch.dimensions(width:600, height:400);                   
);

请帮帮我,我试图找到一个与他有关的论坛,但我认为我没有正确的关键字。谢谢!

【问题讨论】:

当您从点击处理程序中删除代码时,您是否将其放入$(document).ready(function() /*your code here*/ ); 处理程序中?您的代码尝试附加到 ".muc_search" 元素,因此您需要在解析该元素后运行它。 是的,它在那个处理程序里面——尽管带有点击事件的原始代码也在处理程序里面。您是正确的“您的代码尝试附加到“.muc_search”元素”。我将“.muc_search”更改为“div.muc_search”,并且我的页面正确呈现 - 但默认情况下仍然没有显示浮动框。同时,我发现我可以在登录时强制点击事件,所以现在我可以使用这个解决方法:$("input.room_search").trigger('click'); 【参考方案1】:

我没有完全明白你的问题,但是看问题,点击事件可以很容易地被解除绑定

$('#mySelectr').unbind('click');

在 unbind 函数中,给出要取消绑定的任何事件的名称。

【讨论】:

以上是关于从点击事件中移除一个函数的主要内容,如果未能解决你的问题,请参考以下文章

如何在拖动 React 组件的上下文中移除事件监听器

从 DOM 中移除的元素中取消绑定事件

在遍历事件处理程序集合时,如何安全地从回调中移除处理程序?

html元素移除回调

vue.js怎样移除绑定的点击事件

jquery 点击事件