0

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

我需要下面的 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

4 回答 4

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();
    }
);

查看文档以获取更多信息。

于 2009-09-28T20:58:34.240 回答
2

使用 stopPropagation() 和 stopImmediatePropagation() 时要小心,就好像它们是同一件事一样:

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

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

于 2011-06-28T20:50:43.587 回答
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()

于 2009-09-28T20:52:34.720 回答
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();
    });
});
于 2009-09-28T20:57:33.050 回答