jQuery - 如何使用stopPropagation()

时间:2009-09-28 20:37:34

标签: jquery propagation

我以前做过这个,但是我无法让它工作......

我需要以下jquery才能拥有.stopPropagation函数,因此如果用户过快地悬停在三个元素上,动画就不会发疯!

    $(function () {
            var tabContainers = $('div.subMenu > div');
            tabContainers.hide();

            $('.mainMenuDiv a').hover(
            function (e) {
                tabContainers.filter(this.hash).slideDown();
                e.stop();
            },
            function(e){
                tabContainers.filter(this.hash).slideUp();
                e.stopPropagation();
            });
    });

4 个答案:

答案 0 :(得分:4)

听起来您正在寻找取消任何动画不完整的stop功能。

$('.mainMenuDiv a').hover(
    function (e) {
        tabContainers.filter(this.hash).stop().slideDown();
    },
    function(e){
        tabContainers.filter(this.hash).stop().slideUp();
    }
);

或者如果您想要“回滚”任何正在进行的动画,请尝试:

$('.mainMenuDiv a').hover(
    function (e) {
        tabContainers.filter(this.hash).stop(true, true).slideDown();
    },
    function(e){
        tabContainers.filter(this.hash).stop(true, true).slideUp();
    }
);

查看docs了解详情。

答案 1 :(得分:2)

使用stopPropagation()和stopImmediatePropagation()时要小心,就像它们是同一个东西一样:

  • Event.stopPropagation()方法阻止事件对象移动到下一个节点,但只能在允许当前节点上的任何其他事件侦听器执行之后。

  • Event.stopImmediatePropagation()方法还可以阻止事件对象移动到下一个节点,但不允许当前节点上的任何其他事件侦听器执行。

答案 2 :(得分:0)

$(function () {

        var tabContainers = $('div.subMenu > div');
        tabContainers.hide();

        $('.mainMenuDiv a').hover(function () {

            tabContainers.filter(this.hash).dequeue().slideDown();

        },function () {

            tabContainers.filter(this.hash).dequeue().slideUp();

        });

});

希望这会有所帮助。 ;)事件从子元素“冒泡”到其所有父元素,您将event.stopPropragation();event.stopImmediatePropagation()。但是要停止动画dequeue()

答案 3 :(得分:0)

我可能错了,但这可能有效:

$(function () {
    var tabContainers = $('div.subMenu > div');
    tabContainers.hide();
    $('.mainMenuDiv a').hover(function() {
        tabContainers.filter(this.hash).stop().slideDown();
    },function() {
        tabContainers.filter(this.hash).stop().slideUp();
    });
});