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

Posted

技术标签:

【中文标题】Jquery $this 或 each() 一次指定一个链接【英文标题】:Jquery $this or each() to specify one link at a time 【发布时间】:2010-12-04 09:10:32 【问题描述】:

我发现 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 表示法? 他们都会工作吗?

【问题讨论】:

【参考方案1】:
$('a').text()

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

"mederlogoutaboutfaqQuestionsTagsUsersBadgesUnansweredAsk QuestionJquery $this 或 each() 到 指定一个链接 时间jquery每个这个编辑关闭标志克里斯添加 评论jqueryeachthis问你自己的 questionjquerythiseachC++/Unix Waterfront International 程序员 Ltdjobs.***.com问题 饲料关于常见问题博客播客隐私 政策广告信息联系方式 我们总是反馈 Welcome***.comserverfault.comsuperuser.commetahowtogeek.comdoctype.comcc-wikiattribution 必填”

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

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

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

关于 vanilla 循环交易 - 我会在它上面使用 jQuery.prototype.each 因为它是一个更高级别的函数,你必须为 nodeList 的长度分配一个变量并从 0 开始,在长度处停止(或如果顺序无关紧要,请执行反向 while 循环).. 这只会导致不必要的工作。

【讨论】:

谢谢你说得很有道理,关于如何练习 jquery 的任何提示? 安装 Firebug,访问 jQuery.com 网站,打开控制台,随心所欲地进行实验。 继续练习吧!查看源代码肯定会有所帮助,因为您可以了解某些命令是如何实现的,但如果您已经熟悉 JavaScript,我建议您这样做,因为某些代码可能很难理解/跨度>

以上是关于Jquery $this 或 each() 一次指定一个链接的主要内容,如果未能解决你的问题,请参考以下文章

jquery - $(this).remove() 不适用于 each() 函数

jquery中$each()

jQuery.each()

jquery中的each方法,$.each this.each $.fn.each

为啥在 jQuery 插件中返回 this.each(function())?

jquery插件模式中this和this.each有什么区别?