0

私はRubyonRailsを使用してアプリケーションを開発しています。active(パーシャルを使用して)ページへのリンクのセットを含めました。誰かがページにアクセスしたときにクラスを追加したいと思います。

したがって、このようなリンクがある場合:(これはすべてのページに含まれ、ページをよりきれいにします)

<ul>
<li><a href="profile">Profile</a></li>
<li><a href="profile/users">Users</a></li>
</ul>

私はjQueryを持っています:

var loc = window.location.pathname;
var href = ??
if(loc == href){
 var thisli = $('href').parents('li');
 $(this).addClass('active');
}

私はまだそのようなことをどうやってやるのか考えていますか?別の方法がない限り?私はPHPでの作業に慣れているので、誰かが現在アクセスしているリンクにアクティブなクラスを追加する他の簡単な方法がRailsにあるかどうかはわかりません。

ありがとう!

4

2 に答える 2

2

あなたが試すことができます

$(function(){
    $('a[href="' + window.location.pathname + '"]').closest('li').addClass('active');
})
于 2013-03-11T03:47:33.053 に答える
0

javascript / jQueryを使用すると、現在のURLパスを確認し、window.location.pathnameそれをリンクと比較できます。要素を使用して、a絶対URLを比較できます。

2つのURLを比較するには、少し追加の作業を行う必要があります。基本的な考え方は、別の[hidden]a要素を作成し、その要素のhrefをテストURLに設定して、結果の2つの絶対URLが一致するかどうかを確認することです。

だから最初に:

function compareURLs(url1, url2) {
    var testElement = $('<a href=""></a>'),
        result1, result2;
    testElement.attr('href', url1);
    result1 = testElement.get(0).href;
    testElement.attr('href', url2);
    result2 = testElement.get(0).href;
    return result1 == result2;
}

次に、各a要素を確認します。

var path = window.locaion.pathname;
$('ul a').each(function() {
    if (compareURLs(path, $(this).attr('href')) {
        $(this).addClass('active');
    }
}
于 2013-03-11T03:53:33.323 に答える