我正在尝试将href
.mp3Logo
中的div
值存储到变量中。我想点击.startb
来存储它。 musicLink
中的值存储为未定义。为什么呢?
的Javascript
$('.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>
答案 0 :(得分:6)
div没有href
属性。你需要进入锚点。
$(this).siblings('.mp3Logo').find('a').attr('href');
答案 1 :(得分:1)
$('.startb').click(function() {
var musicLink = $(this).siblings('.mp3Logo').children().attr('href');
});
甚至更容易,因为我评论div.startb rel属性保存a [href]值。
$('.startb').click(function() {
var musicLink = $(this).attr('rel');
});
Div不是href,因此您收到了未定义的href。
答案 2 :(得分:0)
删除var
$('.startb').click(function() {
musicLink = $(this).siblings('.mp3Logo').find('a').attr('href');
});
你在范围内使它成为本地的
你需要查看div以找到实际具有href的a
答案 3 :(得分:0)
需要上述提出的解决方案的组合。是的,musicLink未定义,因为您使用“var”使其在范围内是本地的。写“var musicLink;”在.click()之前的所需范围内,或删除“var”以使变量成为全局变量。有关JavaScript中范围链的详细说明,请参阅What is the purpose of the var keyword and when to use it (or omit it)?。
你也在寻找错误的地方。这应该有效:
$('.startb').click(function() {
musicLink = $(this).siblings('.mp3Logo').children('a').attr('href');
});