2012-02-13 13 views
1

.mp3Logo divのhref値を変数に格納しようとしています。 .startbをクリックして保存したい。 musicLinkの値が未定義として保存されています...なぜですか?jquery siblings属性

JS

$('.startb').click(function() { 
    var musicLink = $(this).siblings('.mp3Logo').attr('href'); 
}); 

htmlが

<div class="audioContainer"> 
      <div class="audioTitle"></div> 
      <div class="playerHolder"> 
      <div class="startb" id="startb26" rel="Audio/004_IAM_God_is_Love.mp3"><img src="dbs/images/start.png" width="40" height="40" /></div> 
      <div class="flashObj" id="test26"></div> 
      <div class="mp3Logo"><a href="Audio/004_IAM_God_is_Love.mp3"><img src="dbs/images/mp3_off.gif"/></a></div> 
      </div> 
</div> 
+1

rel属性はあなたのa [href]値を保持します。 –

答えて

5

divがhref属性を持っていません。あなたはアンカーに降りる必要があります。

$(this).siblings('.mp3Logo').find('a').attr('href'); 
+0

が完璧で、時刻が上がっているときに答えられるようになります。 – Blainer

0

スコープ

で、それはローカル作っている

$('.startb').click(function() { 
    musicLink = $(this).siblings('.mp3Logo').find('a').attr('href'); 
}); 

VARを削除し、実際のhref

1
$('.startb').click(function() { 
    var musicLink = $(this).siblings('.mp3Logo').children().attr('href'); 
}); 
を持っている見つけるために、div要素を検討する必要があります

さらにdiv.startb rel属性にa [href]値が保持されているとコメントしています。

$('.startb').click(function() { 
     var musicLink = $(this).attr('rel'); 
    }); 

Divはhrefではないため、定義されていないhrefを受け取りました。

+0

+1 - 'rel'属性のいいキャッチです。 – Anurag

0

上記提案された解決策の組み合わせが求められています。はい、musicLinkは未定義です。なぜなら、 "var"を使用すると、範囲がローカルになるからです。 「var musicLink」と書いてください。 .click()の前に必要なスコープで変数を削除するか、varを削除して変数をグローバルにします。 JavaScriptのスコープチェーンについては、What is the purpose of the var keyword and when to use it (or omit it)?を参照してください。

あなたはまた、間違った場所でhrefを探しています。これはうまくいくはずです:

$('.startb').click(function() { 
    musicLink = $(this).siblings('.mp3Logo').children('a').attr('href'); 
});