【问题标题】:Jquery $this or each() to specify one link at a timeJquery $this 或 each() 一次指定一个链接
【发布时间】: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 表示法? 他们都会工作吗?

【问题讨论】:

    标签: jquery this each


    【解决方案1】:
    $('a').text()
    

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

    "mederlogoutaboutfaqQuestionsTagsUsersBadgesUnansweredAsk QuestionJquery $this 或 each() 到 指定一个链接 时间jquery每个这个编辑关闭标志克里斯添加 评论jqueryeachthis问你自己的 questionjquerythiseachC++/Unix Waterfront International 程序员 Ltdjobs.stackoverflow.com问题 饲料关于常见问题博客播客隐私 政策广告信息联系方式 我们总是反馈 Welcomestackoverflow.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,我建议您这样做,因为某些代码可能很难理解/跨度>
    猜你喜欢
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多