Javascript 如何以正确的方式在()上编写此jquery?

Javascript 如何以正确的方式在()上编写此jquery?,javascript,jquery,syntax,jquery-on,Javascript,Jquery,Syntax,Jquery On,这是我的 $('.test').on({ 'click', 'a', function(event) { event.stopPropagation(); if( $(this).hasClass('selector') ) { } if( $(this).hasClass('prev') ) { } if( $(this).hasClass('next') ) { }

这是我的

$('.test').on({
    'click', 'a', function(event) {
        event.stopPropagation();

        if( $(this).hasClass('selector') ) {
        }
        if( $(this).hasClass('prev') ) {
        }
        if( $(this).hasClass('next') ) {
        }
        return false;
    },
    mouseenter: function(){
    },
    mouseleave: function(){
    }
});

我知道这是错误的语法,那么什么是正确的语法呢?我知道如果我把点击和鼠标事件分开,我就能写出来。但是有没有办法把它们结合起来,或者我需要把它们分开?感谢您抽出宝贵的时间

您可以连接电话:

$('.test').on('click', 'a', function() { ... })
 .on('mouseenter', 'a', function() { ... })
 .on('mouseleave', 'a', function() { ... });

我想如果您愿意,您可以使用一个处理程序来检查事件类型,但这似乎不那么奇怪。

您可以链接调用:

$('.test').on('click', 'a', function() { ... })
 .on('mouseenter', 'a', function() { ... })
 .on('mouseleave', 'a', function() { ... });
我想如果您愿意,您可以使用一个处理程序来检查事件类型,但这似乎不那么奇怪。

.on也接受映射:

。上也接受地图:


如果您不希望在以下两种情况下使用相同的选择器,则必须分别进行两次呼叫:

$('.test').on({
    mouseenter: function() {},
    mouseleave: function() {} //null selector/no selector here so these events only fire on `.test` itself
}).on("click", "a", function(event) { //Selector here so this event only fires for `a` descendants of `.test`
    event.stopPropagation();
    if ($(this).hasClass('selector')) {}
    if ($(this).hasClass('prev')) {}
    if ($(this).hasClass('next')) {}
    return false;
});

您还忘了指定事件参数,这可能会导致IE和firefox中出现错误

如果您不希望在这两个浏览器中使用相同的选择器,则必须分别调用两个:

$('.test').on({
    mouseenter: function() {},
    mouseleave: function() {} //null selector/no selector here so these events only fire on `.test` itself
}).on("click", "a", function(event) { //Selector here so this event only fires for `a` descendants of `.test`
    event.stopPropagation();
    if ($(this).hasClass('selector')) {}
    if ($(this).hasClass('prev')) {}
    if ($(this).hasClass('next')) {}
    return false;
});

您还忘了指定事件参数,这将导致IE和firefox中出现错误。如果您只需要包装器元素上的悬停事件,则需要单独绑定其事件,因为它是一个单独的元素

$('.test').on({
    click: function(event) {
        event.stopPropagation();
        if ($(this).hasClass('selector')) {}
        if ($(this).hasClass('prev')) {}
        if ($(this).hasClass('next')) {}
        return false;
    }
}, "a");

$('.test').hover( function(event){
        // This in the mouse enter handler  
    },
    function(event){
        // This is the mouse leave handler
    }
);

如果只需要包装器元素上的悬停事件,则需要单独绑定其事件,因为它是一个单独的元素

$('.test').on({
    click: function(event) {
        event.stopPropagation();
        if ($(this).hasClass('selector')) {}
        if ($(this).hasClass('prev')) {}
        if ($(this).hasClass('next')) {}
        return false;
    }
}, "a");

$('.test').hover( function(event){
        // This in the mouse enter handler  
    },
    function(event){
        // This is the mouse leave handler
    }
);


您可以在文档中找到说明和示例:。您可能需要。在事件映射[,选择器][,数据]上。我没有看到我想要的示例,因此我编写了我想要的组合。您可以在文档中找到说明和示例:。您可能需要。在事件映射[,选择器][,数据]上。我没有看到我想要的示例,因此我编写了我想要的组合。我需要测试中的adiv@Huangism当前位置此声明基本上就是这么说的。处理来自每个锚点的每次单击、mouseenter和mouseleave事件,这些锚点是.test.Yes的子锚点,但如果它像.delegate一样使用,您可以这样做吗?显然我要去检查文件了…:-@尖刻:奥巴马会说,是的,你可以!哦,我明白了,杜尔;但是您不能有一个映射,每个事件类型都有一个不同的过滤器选择器,在本例中,这是不必要的。很高兴知道!我需要考试的adiv@Huangism当前位置此声明基本上就是这么说的。处理来自每个锚点的每次单击、mouseenter和mouseleave事件,这些锚点是.test.Yes的子锚点,但如果它像.delegate一样使用,您可以这样做吗?显然我要去检查文件了…:-@尖刻:奥巴马会说,是的,你可以!哦,我明白了,杜尔;但是您不能有一个映射,每个事件类型都有一个不同的过滤器选择器,在本例中,这是不必要的。很高兴知道!是事件参数,谢谢。最后的选择器是应用于所有3个事件还是单击?我只需要点击a+1就可以使用操作码给出解决方案,我希望我能给你更多。。。我在这里测试了它@Huangism好的,我现在已经改变了,是的,这就是我现在用链锁的方式。虽然pointy也是正确的,但我会在事件参数之后给您打勾。谢谢,最后的选择器是应用于所有3个事件还是单击?我只需要点击a+1就可以使用操作码给出解决方案,我希望我能给你更多。。。我在这里测试了它@Huangism好的,我现在已经改变了,是的,这就是我现在用链锁的方式。虽然pointy也是正确的,但我会给你一个chek mark作为后遗症谢谢我给了他后遗症的另一个答案但是链锁是正确的方法Hanks我给了他后遗症的另一个答案但链锁是正确的方法