Jquery $ this或each()一次指定一个链接

时间:2009-10-06 18:42:05

标签: jquery this each

我发现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()函数?或$这种表示法? 他们都会工作吗?

1 个答案:

答案 0 :(得分:7)

$('a').text()

会返回每个锚节点文本值的组合..我刚刚在stackoverflow上做了它,它给了我:

  

“mederlogoutaboutfaqQuestionsTagsUsersBadgesUnansweredAsk   QuestionJquery $ this或each()to   在a处指定一个链接   timejqueryeachthiseditcloseflagchrisadd   commentjqueryeachthisask你自己的   questionjquerythiseachC ++ / Unix的   海滨国际的程序员   Ltdjobs.stackoverflow.comquestion   feedaboutfaqblogpodcastprivacy   policyadvertising infocontact   usfeedback总是   welcomestackoverflow.comserverfault.comsuperuser.commetahowtogeek.comdoctype.comcc-wikiattribution   必需的“

因此你应该使用jQuery.prototype.each,这样你就可以保存对每个锚点文本的引用:

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

额外的好处是每个函数都在它自己的执行上下文中运行,你定义的每个变量,声明的每个'text'对于那个函数体是唯一的,所以在一个内部有一个 lot 更多的控件。每个

关于vanilla循环处理 - 我会使用jQuery.prototype.each,因为它是一个更高级别的函数,你必须将一个变量赋值给nodeList的长度并从0开始,停在长度(或者如果顺序没关系,那么做一个反向的循环)..这只会导致更多的工作而不是必要的。