0

JQUERY でこの小さなスクリプトを動作させようとしていますが、問題が発生しています。誰かが私が間違っていることを見ますか? 目的は、次の行を確認することです。

<a id="dnn_dnnLogin_enhancedLoginLink" title="Logout" class="LoginLink" href="/Home/tabid/357/ctl/Logoff/Default.aspx">Logout</a>

文字列「logout」がある場合は、別の div .navDiv のクラスを .navDivLoggedIn にスワップする必要があります。

  var elem = $('dnn_dnnLogin_enhancedLoginLink');
    if (elem.contains('Logout')) {
       var navelem = $('.navDiv');
       $(navelem).attr('class','navDivLoggedIn');
};

前もって感謝します!

4

7 に答える 7

2

containsjQuery関数ではなく、セレクター自体の正規表現タイプです。

http://api.jquery.com/contains-selector/

あなたがするつもりだった:

if ( $('#dnn_dnnLogin_enhancedLoginLink:contains("Logout")') ) {
    // stuff
}

要素の text/html で単純な操作を行って.indexOf()、ログアウトが要素内にあるかどうかをテストすることもできます。

// you were also missing the # for ID
var elem = $('#dnn_dnnLogin_enhancedLoginLink');

if (elem.text().indexOf('Logout') > -1) {
    // stuff
}
于 2013-10-08T14:41:36.623 に答える
1

いくつかのエラーがあります。コメントで指摘したように、適切な構文を使用して ID を介して要素を選択していません。次に、要素で jQuery セレクターをすぐに使用できる場合、すべての変数を作成する必要はありません。最後に、間違った contains 関数を使用しています。

試す:

if ($('#dnn_dnnLogin_enhancedLoginLink:contains("Logout")').length) {
    $('.navDiv').addClass('navDivLoggedIn');
};

これは、必要なことを行う単純化されたjsFiddle の例です。

于 2013-10-08T14:49:24.413 に答える
0

変化する

 $('dnn_dnnLogin_enhancedLoginLink');

 $('#dnn_dnnLogin_enhancedLoginLink');

CSS と同様に jquery でも同じセレクターを使用する必要があります。要素の ID は「dnn_dnnLogin_enhancedLoginLink」であるため、「#dnn_dnnLogin_enhancedLoginLink」を使用する必要があります。

于 2013-10-08T14:40:54.027 に答える
0

これを試して

 if( $("a.LoginLink").text().str.indexOf("Logout") >= 0)
 {
   var navelem = $('.navDiv');
   $(navelem).attr('class','navDivLoggedIn');
 }
于 2013-10-08T14:43:14.347 に答える