当前位置 : 主页 > 网页制作 > JQuery >

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

来源:互联网 收集:自由互联 发布时间:2021-06-15
我发现jQuery难以学习,因为似乎有很多方法可以编写同样的东西. 作为练习,我想在锚标签中取出文本并将其填充到链接href属性中. 例如 a href=""http://www.something.com/a 成为 a href="http://www.so
我发现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()函数?或$这种表示法?
他们都会工作吗?

$('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开始,停止在长度(或者如果顺序没有)无论做什么反向循环)..这只会导致更多的工作而不是必要的.

网友评论