首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将.each与closest()一起使用

将.each与closest()一起使用
EN

Stack Overflow用户
提问于 2012-03-06 01:38:11
回答 4查看 5.1K关注 0票数 3

我正在尝试循环通过表单中的一堆字段,并且需要更改链接文本。

我想要的结果是

代码语言:javascript
运行
复制
Alert("Second 1");
Alert("Second 2");

示例代码:

代码语言:javascript
运行
复制
<div class="text-wrapper">
    <input class="field-text" value="">
</div>
<div>
    <ul>
        <li><a href="" class="first">First</li>
        <li><a href="" class="second">Second 1</li>
    </ul>
</div>
<div class="text-wrapper">
    <input class="field-text" value="">
</div>
<div>
    <ul>
        <li><a href="" class="first">First</li>
        <li><a href="" class="second">Second 2</li>
    </ul>
</div>

<script>
jQuery(document).ready(function() {
        jQuery(".text-wrapper").each(function(){
            var value = jQuery(this).closest("a.second").text();
            alert(value);
        });
});
</script>
EN

回答 4

Stack Overflow用户

发布于 2012-03-06 01:39:49

closest查找与选择器匹配的父项,而不是子项。

您需要的是find

编辑:find将不起作用,因为您要查找的标签不是text-wrapper的子级。您需要手动遍历DOM来查找元素。

代码语言:javascript
运行
复制
jQuery(this).next('div').find("a.second").text();
票数 5
EN

Stack Overflow用户

发布于 2012-03-06 01:40:46

closest()遍历DOM树,从节点本身开始,然后是parentNode、父节点的parentNode,依此类推。您要查找的函数是find(),它搜索给定节点的后代。

编辑以确保完整性:

由于a.second不是.text-wrapper的后代,因此您必须首先调用next(),它将返回.text-wrapper的下一个兄弟元素,即包含a.second的div元素。

代码语言:javascript
运行
复制
jQuery(this).next().find('a.second').text()
票数 3
EN

Stack Overflow用户

发布于 2012-03-06 01:48:32

工作解决方案的完整jsFiddle,包括控制台日志中显示的两个链接:http://jsfiddle.net/3rH63/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9571254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档