作为练习,我想在锚标签中取出文本并将其填充到链接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()函数?或$这种表示法?
他们都会工作吗?
$('a').text()
将返回每个锚节点文本值的组合..我只是在stackoverflow上做了它,它给了我:
“mederlogoutaboutfaqQuestionsTagsUsersBadgesUnansweredAsk
QuestionJquery $this or each() to
specify one link at a
timejqueryeachthiseditcloseflagchrisadd
commentjqueryeachthisask your own
questionjquerythiseachC++/Unix
Programmer at Waterfront International
Ltdjobs.stackoverflow.comquestion
feedaboutfaqblogpodcastprivacy
policyadvertising infocontact
usfeedback always
welcomestackoverflow.comserverfault.comsuperuser.commetahowtogeek.comdoctype.comcc-wikiattribution
required”
因此,您应该使用jQuery.prototype.each,以便保存对每个锚点文本的引用:
$('a').each(function() { var text = $(this).text(); $(this).attr('href', text ); });
额外的好处是每个函数都在它自己的执行上下文中运行,你定义的每个变量,声明的每个’text’对于该函数体是唯一的,因此在.each中有更多的控制.
关于vanilla循环处理 – 我会使用jQuery.prototype.each,因为它是一个更高级别的函数,你必须将一个变量赋值给nodeList的长度并从0开始,停止在长度(或者如果顺序没有)无论做什么反向循环)..这只会导致更多的工作而不是必要的.