将一些代码附加到div中的所有链接

时间:2011-12-23 09:53:50

标签: jquery append

我想在特定div中使用mp3扩展名的所有链接后附加代码。

以下是我正在尝试的代码:

$("#Temp_Div").find('a[href$="mp3"]').append('<a class="mp3play" href="javascript:Play('+ $(this).href +');"></a>');

问题是$(this).href它不会返回链接的href。它返回undefined

5 个答案:

答案 0 :(得分:3)

如果this是一个DOM对象,您应该只使用:

this.href

(更详细,效率更低)jQuery编写它的方式是:

$(this).attr('href');

在任何情况下,.append()调用都无法正常工作,因为this实际上根本没有设置。

您需要使用带有回调函数的匹配元素调用.each()。然后,jQuery将确保this设置为当前DOM对象。

像这样:

$("#Temp_Div").find('a[href$="mp3"]').each(function() {
    $(this).append('<a class="mp3play" href="javascript:Play('+ this.href +');" />');
});

答案 1 :(得分:1)

href是一个属性,因此您必须使用attr函数,例如:

$("#Temp_Div").find('a[href$="mp3"]').each(function() { $(this).append('<a class="mp3play" href="javascript:Play('+ $(this).attr('href') +');"></a>'); });

您可以查看documentation

答案 2 :(得分:1)

这应该适合你:

$("#Temp_Div").find('a[href$="mp3"]').each(function() {
    $(this).after('<a class="mp3play" href="javascript:Play('+ this.href +');"></a>');
});

this将引用a标记。 (您不需要将其包装在jquery对象中以获取href)

我认为您还想使用after而不是append,因为这会在另一个链接之后而不是在其中添加链接。

Example

答案 3 :(得分:1)

尝试使用$(this).attr('href'),这应该可行。

答案 4 :(得分:0)

如果元素是锚

,请尝试this.href