如何使用jQuery将超链接文本用作变量?

时间:2011-03-31 08:39:05

标签: jquery variables attributes selector href

我有一个jQuery函数,它将使用该超链接作为源来替换jPlayer的每个超链接。 HTML中的超链接如下所示:

<div>
<a href="demos/myfile.mp3" rel = 'jPlayer'>myfile</a>
</div>

所以到目前为止我在Javascript中得到的是:

$(document).ready(function() {   
  $('a[rel="jPlayer"]').jPlayer("setMedia", { mp3: $(this).attr("href") });
});

问题是我无法找出正确的选择器来获取现有超链接的值并将其用于代码中的mp3:source。也许我甚至没有使用这个正确的,或者它可能是我所缺少的完全不同的东西。

当我按原样运行代码时,我在Firebug中得到“a.attributes为null”。任何人都可以帮忙解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

问题在于你的脚本构造:

$('a[rel="jPlayer"]').jPlayer("setMedia", { mp3: $(this).attr("href") });

您将此引用到jPlayer,而不是选择的值。你应该以其他方式使用它,试试这个:

$('a[rel="jPlayer"]').jPlayer("setMedia", { mp3: $('a[rel="jPlayer"]').attr("href") });

或eaven

var anchor = $('a[rel="jPlayer"]');
anchor.jPlayer("setMedia", { mp3: anchor.attr("href") });

答案 1 :(得分:1)

页面上可以有多个链接。要正确初始化每个jPlayer实例,您可以迭代所有链接并为每个匹配的元素初始化jPlayer。

$(document).ready(function() {   
    $('a[rel="jPlayer"]').each(function(index){
        var link = $(this);
        link.jPlayer("setMedia", { mp3: link.attr("href") });
    }); 
});

答案 2 :(得分:0)

如果this工作不明显,我会拉出选择器并重新使用它。

$(document).ready(function() {   
  var media_link = $('a[rel=jPlayer]');
  media_link.jPlayer("setMedia", { mp3: media_link.attr("href") });
});

这具有仅在锚元素上调用extend一次而不是两次的双重效果。我删除了引号,稍微改变了选择器。