1

これは説明するのが難しいので、最善を尽くします。このコードは次のとおりです。

$('#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 が設定されます。アラートでは、正しく表示されています (たとえば、その値が「ホーム」であるとしましょう。ホバー アウト時に選択されるナビゲーションのページ リンクに #underliner.css の位置と幅を設定する必要があるため、他の 'a' を「見つけて」それらを使用する方法はありますか? コードで、私が何をしようとしていたかが明らかであることを願っています. これは私のマークアップです:

<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>

また、コードの最初のブロックが非常に間違っていることも知っています。これは、ここに投稿することを決定する前に、怒りと絶望から最後に行ったことです。

4

2 に答える 2

2

event.targetまず、 ;のようなものを介して選択した「a」を使用できます。次に、ターゲット
に追加します。 第三に、セレクターで他のaを取得し ます。たとえば、ここでは、配列内のアクティブでないaを取得します。これは、経由でトラバースできます。activeClass
$("ul#navibar li a:not(.activeClass)")$.each

少しお役に立てば幸いです。

于 2012-07-19T03:43:48.457 に答える
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);
});
于 2012-07-19T03:32:29.357 に答える