2012-02-13 145 views
1

我想將.mp3Logo div中的href值存儲到一個變量中。我想通過點擊.startb來存儲它。 musicLink中的值被存儲爲未定義...爲什麼?jquery兄弟姐妹屬性

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屬性保存您的[href]值。 – 2012-02-13 23:47:39

回答

5

股利不具有href屬性。你需要下降到錨點。

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

完美,當時間到了時會標記爲已回答 – Blainer 2012-02-13 23:43:47

0

刪除了var

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

你正在使當地的範圍

,你需要尋找到div來發現它實際上有HREF

1
$('.startb').click(function() { 
    var musicLink = $(this).siblings('.mp3Logo').children().attr('href'); 
}); 
的一個

或甚至更容易,因爲我評論說,div.startb rel屬性保存了[href]值。

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

Div並不是一個href,因此您正在接收未定義的href。

+0

+1 - rel'屬性的好結果。 – Anurag 2012-02-14 00:17:55

0

上面提出的解決方案的組合被稱爲對。是的,musicLink是未定義的,因爲您使用「var」使其成爲本地範圍。要麼寫「var musicLink;」在.click()之前的所需範圍內,或者刪除「var」以使您的變量成爲全局變量。請參閱What is the purpose of the var keyword and when to use it (or omit it)?以獲得對JavaScript範圍鏈的很好的解釋。

你也在尋找錯誤的地方href。這應該工作:

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