删除由另一个脚本

时间:2016-06-29 16:41:38

标签: javascript jquery events listener

使用Chrome开发者工具,我找到了一个点击事件监听器,我想删除:

enter image description here

如果我使用开发人员工具删除监听器,它可以工作。现在我已经发现通过jQuery添加了监听器:

$(".js_playerlist").on("click",".playerlist_item",function(){
    var a=$(this).hasClass("nothingThere");
    if(!a) { 
        var d=$(this).data("msgid");
        if(d) { 
            b.loadChatLogWithPlayer(this,d)
        } else {
            b.loadChatLogWithPlayer(this)
        }
    }
});

如何通过Javascript 不使用jQuery 删除此事件侦听器?

2 个答案:

答案 0 :(得分:1)

你必须使用jQuery函数来执行此操作,因为事件由jquery附加,因此使用 unbind() off() 这两个函数将删除事件:

$(".js_playerlist").delay(1000).off("click",".playerlist_item");
//OR
$(".js_playerlist").delay(1000).unbind( "click.playerlist_item" );

您可以使用javascript方法removeEventListener()但是您必须将要删除的函数作为参数传递,并且在您的案例中附加事件的脚本可以避免这种情况。 希望这会有所帮助。

答案 1 :(得分:0)

我想你可以使用

  function register_popup(id, name) {

        for (var iii = 0; iii < popups.length; iii++) {
            //already registered. Bring it to front.
            if (id == popups[iii]) {
                Array.remove(popups, iii);

                popups.unshift(id);

                calculate_popups();


                return;
            }
        }

        var element = '<div class="popup-box chat-popup" id="' + id + '">';
        element = element + '<div class="popup-head">';
        element = element + '<div class="popup-head-left">' + name + '</div>';
        element = element +
            '<div class="popup-head-right"><a href="javascript:close_popup(\'' +
            id +
            '\');">&#10005;</a></div>';
        element = element + '<div style="clear: both"></div></div><div class="popup-messages"></div>';
        element = element +
            '<div class="chat-inputbox" ><input type="text" class="chat-inputboxval"  /></div></div>';

        document.getElementsByTagName("body")[0]
            .innerHTML = document.getElementsByTagName("body")[0].innerHTML + element;

        popups.unshift(id);

        calculate_popups();
    }

在这种情况下,document.getElementsByClassName("js_playerlist")[0].removeEventListener("click", attachedFunction); 是附加在事件触发时调用的函数。在你的情况下:

attachedFunction

可能,如果您可以访问代码,提取函数并将其分配给变量,代码将更清晰。

如果其他脚本不在你的onwership下,为了100%易于维护,我建议你发送一个其他脚本代码的请求并解析它以获得所需的功能,所以你将拥有最新版本。