jquery兄弟姐妹的属性

时间:2012-02-13 23:38:50

标签: javascript jquery html html5

我正在尝试将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>

4 个答案:

答案 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');
});