我正在尝试遍历表单中的一堆字段,需要更改链接文本。
我想要的结果是
Alert("Second 1");
Alert("Second 2");
示例代码:
<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>
答案 0 :(得分:4)
closest
找到与选择器匹配的父级,而不是子级。
您想要find
。
编辑:find
无效,因为您要查找的代码不是text-wrapper
的子代。您需要手动遍历DOM以查找元素。
jQuery(this).next('div').find("a.second").text();
答案 1 :(得分:2)
closest()
从节点本身开始向上遍历DOM树,然后是parentNode,parentNode的parentNode,依此类推。
您正在寻找的函数是find()
,它搜索给定节点的后代。
编辑完整性:
由于a.second
不是.text-wrapper
的后代,您首先必须调用next()
,它返回.text-wrapper
的下一个兄弟,即包含{{的div元素1}}。
a.second
答案 2 :(得分:0)
完整的jsFiddle工作解决方案,包括控制台日志中显示的两个链接:http://jsfiddle.net/3rH63/
答案 3 :(得分:0)
这应该按照您提供的测试用例工作。在尝试使用以下代码之前,您尚未正确关闭标记:
$("div:odd").each(function(){
var value = $(this).find("a.second").html();
alert(value);
});