我需要在悬停时使用选择器,在悬停外部使用变量集来查找特定链接

时间:2012-07-19 03:25:24

标签: javascript jquery html css

这对我来说很难解释,所以我会尽我所能。下面是这段代码:

$('#navibar a').hover(function(){
    var position = $(this).position(); 
    var width = $(this).width();
    $('#underliner').css({'width': '' + width + '','left': position.left});
    //$('#underliner').show("slide", { direction: "left" }, 100);
    $('#underliner').stop().animate({opacity: 1}, 30).show();
}, function () {
    var homePos = $(this).find(attr(activePageHref)).position();
    var homeWidth = $(this).find(attr(activePageHref)).width();
    //$('#underliner').css({'width': '' + homeWidth + '','left': homePos.left});
    //$('#underliner').show("slide", { direction: "left" }, 100);
    //$('#underliner').stop().animate({opacity: 1}, 30).show();
    alert(activePageHref);
});

activePageHref在此外部设置为已单击的页面。在警报中,它显示正确(例如,我们只是说它的值是“home”。我需要以某种方式将#underliner.css位置和宽度设置为在悬停时选择的导航中的页面链接,因此有没有办法“找到”其他'并使用它们?希望在代码中显然我想要做的事情。这是我的标记:

<ul id="navibar">
            <li><a href="home">Home</a></li>
            <li><a href="products">Products</a></li>
            <li><a href="games">Games</a></li>
            <li><a href="store">Store</a></li>
            <li><a href="support">Support</a></li>
            <li><a href="community">Community</a></li>
        </ul>

另外,我知道第一个代码块是BIG TIME错误的,这是我决定在这里发布之前最后一次出于聚合和绝望的事情。

2 个答案:

答案 0 :(得分:2)

使用属性选择器查找href为activePageHref的链接

$('#navibar a').hover(function(){
    var position = $(this).position(); 
    var width = $(this).width();
    $('#underliner').css({'width': '' + width + '','left': position.left});
    //$('#underliner').show("slide", { direction: "left" }, 100);
    $('#underliner').stop().animate({opacity: 1}, 30).show();
}, function () {
    var homePos = $(this).parents('#navibar').find('a[href="'+activePageHref+'"]').position();
    var homeWidth = $(this).parents('#navibar').find('a[href="'+activePageHref+'"]').width();
    //$('#underliner').css({'width': '' + homeWidth + '','left': homePos.left});
    //$('#underliner').show("slide", { direction: "left" }, 100);
    //$('#underliner').stop().animate({opacity: 1}, 30).show();
    alert(activePageHref);
});

答案 1 :(得分:2)

首先,您可以通过类似event.target的内容选择“a”;
其次,您将activeClass添加到目标;
第三,通过选择器获取另一个,例如$("ul#navibar li a:not(.activeClass)") 在这里,您将获得数组中不活跃的数据,您可以通过$.each

进行遍历

可能会对你有所帮助。