2017-05-30 4 views
0

私はaria-expandedtruefalseであるかどうかに応じて<span>タグのクラスを変更しようとしているが、それは働いていないので、代わりに「未定義」を返すように見えます。はJavaScriptでARIA-拡大値を取得しようとしているが、「未定義」になっ

これは私のjavascriptです:

$(function() { 
    if ($('#tester').attr('aria-expanded') === 'true') { 
     $("#testerTwo").toggleClass("glyphicon-eye-close glyphicon-eye-open"); 
    } 
}); 

そして、私のHTMLは(ブートストラップを使用して)次のようになります。

<div class="col-sm-6"> 
    <a id="tester" data-toggle="collapse" href="#collapsible" aria-expanded="false"> 
     <h3><span class="glyphicon glyphicon-star"></span> Extra <span id="testerTwo" class="glyphicon glyphicon-eye-close"></span></h3> 
    </a> 
    <div class="collapse" id="collapsible"> 
     <div class="card card-block"> 
      <ul> 
       <li><a href="#">item 1</a></li> 
       <li><a href="#">item 2</a></li> 
       <li><a href="#">item 3</a></li> 
       <li><a href="#">item 4</a></li> 
      </ul> 
     </div> 
    </div> 
</div> 
+0

あなたのコードが動作しています。あなたの問題は何ですか? –

+0

@Dineshそれは私のために働いていない。 attr( 'aria-expanded')); 'それは"未定義 "と言いますが、私はこれが動作しない理由だと思います。どういうわけか、状態が「真」か「偽」かを読み取ることはできません –

+0

これを確認してくださいhttps://jsfiddle.net/nfmwaeyt/その作業 –

答えて

1

あなたが機能をクリックしてそれを変更することができ、あなたが欲しいの代わりに、セレクタを使用することができますh3。それがお役に立てば幸い:

$(function() { 
 
$("h3").click(function() { 
 
    $("#testerTwo").toggleClass("glyphicon-eye-close glyphicon-eye-open"); 
 
}) 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<!-- Latest compiled and minified CSS --> 
 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> 
 

 
<!-- Optional theme --> 
 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous"> 
 

 
<!-- Latest compiled and minified JavaScript --> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> 
 
<div class="col-sm-6"> 
 
    <a id="tester" data-toggle="collapse" href="#collapsible" aria-expanded="false"> 
 
     <h3><span class="glyphicon glyphicon-star"></span> Extra <span id="testerTwo" class="glyphicon glyphicon-eye-close"></span></h3> 
 
    </a> 
 
    <div class="collapse" id="collapsible"> 
 
     <div class="card card-block"> 
 
      <ul> 
 
       <li><a href="#">item 1</a></li> 
 
       <li><a href="#">item 2</a></li> 
 
       <li><a href="#">item 3</a></li> 
 
       <li><a href="#">item 4</a></li> 
 
      </ul> 
 
     </div> 
 
    </div> 
 
</div>

+0

ありがとう、これは素晴らしい回避策です。 (私のやり方がうまくいかない理由はまだ分かりませんが) –

+0

あなたのコード内で、要素を盛り上げているので、ariaが偽か真かをチェックしていますが、いつですか?あなたはあなたが行っている各クリックをチェックする必要があります。この場合、toggleclassは十分です。私はそれがあなたを助けてくれることを願っています。 – SilverSurfer

+1

ああ、意味があります。ありがとう!私はまだ非常に初心者ですので、まだそれをもっと調べる必要があります –

関連する問題