3

我发现 jQuery 很难学习,因为似乎有很多方法可以编写相同的东西。

作为练习,我想将锚标记中的文本填充到链接 href 属性中。

例如

<a href="">http://www.something.com</a>

成为

<a href="http://www.something.com">http://www.something.com</a>  

我的第一次尝试是

<script type="text/javascript">
$(document).ready(function() {
var text = $('a').text();

$('a').attr( 'href', text );
});
</script>

这显然不起作用,因为我需要指定为每个链接执行此操作。

我应该使用 foreach 循环吗?.each() 函数?还是 $this 表示法?他们都会工作吗?

4

1 回答 1

7
$('a').text()

将返回每个锚节点文本值的组合。我只是在stackoverflow上做了它,它给了我:

“mederlogoutaboutfaqQuestionsTagsUsersBadgesUnansweredAsk Questionjquery $this 或 each() 一次指定一个链接"

因此,您应该使用 jQuery.prototype.each 以便您可以保存对每个锚文本的引用:

$('a').each(function() {
    var text = $(this).text();
    $(this).attr('href', text );
});

额外的好处是每个函数都在自己的执行上下文中运行,您定义的每个变量,声明的每个“文本”对于该函数体都是唯一的,因此.each 内部有更多的控制

关于香草循环交易 - 我会在它上面使用 jQuery.prototype.each 因为它是一个更高级别的函数,你必须为 nodeList 的长度分配一个变量并从 0 开始,在长度处停止(或者如果 order 没有'没关系做一个反向while循环)..这只会导致不必要的工作。

于 2009-10-06T18:44:28.700 回答