can .off会删除那些没有附加.on()的事件处理程序吗?

时间:2014-07-08 20:09:40

标签: jquery

我的.off功能似乎不起作用:

<script type="text/javascript">
    $(function() {
        $("#evtTarget").hover(highlight, highlight);
        $("#evtTarget").click(function(){
            $("#evtTarget").off("hover"); 
            });
    });

    function highlight(){
        $("#evtTarget").toggleClass("highlighted"); 
        }

</script>

我可以删除.hover事件吗?

2 个答案:

答案 0 :(得分:2)

没有hover事件。来自the documentation

致电$( selector ).hover( handlerIn, handlerOut )是:

的简写
$( selector ).mouseenter( handlerIn ).mouseleave( handlerOut );

所以试试这个:

$('#evtTarget').off('mouseenter mouseleave');

答案 1 :(得分:0)

.off('hover'不起作用,因为hover实际上不是DOM事件。 .hover()mouseentermouseleave合并的简写。

因此,您应该这样做:

$(function() {
    $('#evtTarget').on({
        'mouseenter mouseleave':function(){
            $(this).toggleClass("highlighted")
        },
        click:function(){
            $(this).off('mouseenter mouseleave'); 
        }
    });
});

这将删除这些事件的绑定。出于优化目的,我还冒昧地使用缓存和合并代码。