【问题标题】:jQuery How to affect Single element on mouseOverjQuery如何影响mouseOver上的单个元素
【发布时间】:2009-09-25 14:53:46
【问题描述】:

由于我还在学习,这个问题似乎很容易回答,但我仍然需要问。

如何更改此脚本,使其不会显示所有工具提示?

现在发生的事情是每当我将鼠标悬停在.pink-nose a 上时,所有.tooltip 都会同时消失

    $(function(){
        var pn = $('.pink-nose a')
        var tp = $('.pink-nose .tooltip')

        tp.css({'display':'none'})
        pn.mouseover(function(){
            tp.fadeIn()            
        })
    })

提前感谢您的帮助

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    不要在处理函数中使用tp,而应该从this(鼠标悬停的元素)开始,并遍历到其相关的工具提示。像这样的:

    $(function(){
        $('.pink-nose .tooltip').hide();
    
        $('.pink-nose a').mouseover(function(){
            $(this).parents('.pink-nose:first').find('.tooltip').fadeIn();
        })
    })
    

    确切的遍历将取决于您的标记结构,请查看jQuery documentation for Traversing 找出最有效的方法。

    【讨论】:

    • 已更改,祖先为父母,因为现在不推荐使用祖先。
    【解决方案2】:
    $('.pink-nose .tooltip').hide().each(function() {
        var $this = $(this);
        $this.parents('a').mouseover(function() {
            $this.fadeIn();
        });
    });
    

    【讨论】:

    • 相信你在 mouseover 函数中重用 $this 会有一些问题。 $this 不会绑定正确的对象。如果您在 $this 前面添加var,它应该可以工作。此外,您需要在每个方法中的函数声明。
    • 使用 hide 代替 css 的良好通话
    • 除非你在父函数中声明它不是。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    相关资源
    最近更新 更多