2016-09-29 5 views
0

クリックされたhtml要素の属性(aria-controls)にアクセスしようとしています。このhtml要素の属性へのアクセス方法は?

これは私のコードです:IこのHTML文字列、

alert($(this).html()); 

戻り値:

<li id="nav-host-status-tab" role="presentation" class="nav-host-tab active"> 
    <a href="#host-status" aria-controls="host-status" role="tab" data-toggle="tab"> 
     <i class="fa fa-tachometer"></i> Status 
    </a> 
</li> 

声明:

$(".nav-host-tab").click(function(e){ 
    alert($(this).html()); 
    // Try to access the aria-controls attribute of the clicked element 
}); 

これは.nav-host-tab要素のHTMLのコンテキストであります私が探している属性を明確に見ることができます:

<a href="#host-status" aria-controls="host-status" role="tab" data-toggle="tab"> 
     <i class="fa fa-tachometer"></i> Status 
</a> 

は、だから私はとaria-controls属性にアクセスしよう:

alert($(this).data('aria-controls')); 

しかし、それは返します

undefined 

もう一つの試み:

alert($(this).attr('aria-controls')); 

そしてそれはまた、返します。

undefined 

aria-controlsにはどのようにアクセスできますか?あなたは子要素を見つける必要がある

+3

'$(this)を存在していたことaria-controlsはそう見つける必要はありません。 children()。attr( 'aria-controls'); '表示されたHTMLは子供のものです。 – Tushar

+0

この$( 'a [href = "#ホストステータス"]')を試してください。attr( 'aria-controls'); –

+0

'これはあなたが思うものではありません... – Rayon

答えて

0

は、あなたが私達にあなたのHTML構造を与えられていないが、あなたは$(this).html()によって返されたHTMLでそれを見ている場合に

$(".nav-host-tab").click(function(e){ 
    //find the child element of .nav-host-tab 
    var a = $(this).find('a'); 
    a.attr('aria-controls'); 
}); 
2

から属性を取得しますが、

$(this).attr("aria-controls")はそれを返しません、それはあなたがfindで見つけて(その後、その要素にattrを使用する)ことができ子孫要素、上にある必要がありますvar controls = $(this).find( "a [href = '#ホストステータス]] [aria-controls]」)。attr(" aria-controls ");

セレクタの一部は、.nav-host-tabの完全なHTML構造によってはオプションである場合があります。

今、あなたは私たちの構造を示したので、それはそう、子要素と実際にのみ子要素です:

var controls = $(this).children().attr("aria-controls"); 

か、より具体的にしたい場合:

var controls = $(this).children("a").attr("aria-controls"); 

または

var controls = $(this).children("[aria-controls]").attr("aria-controls"); 

など

+1

なぜこのような状況で 'find()'が良くなってから 'children()'ですか? – Mihailo

+1

@Mihailo:OPの全体的なHTML構造を知らないと、私は表示されていないネスティングを許可していました。質問は、より具体的な回答を提供できるように全体の構造を示しているはずです。 'a'が実際に直接の子であれば、' find'と 'children'は両方とも動作し、' children'はやることが少なくなります。そうでない場合、 'find'は無関係に動作します。 –

+0

@Mihailo:OPが私たちにHTMLを示しました。それは子供ですから、子供たちは良い選択です。 –

0

あなたのクリックされた要素は、要素

alert($(this).find("a").attr('aria-controls')); 
0

私はこのヘルプを願っています:)

​​

関連する問題