我正在尝试循环通过表单中的一堆字段,并且需要更改链接文本。
我想要的结果是
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>
发布于 2012-03-06 01:39:49
closest
查找与选择器匹配的父项,而不是子项。
您需要的是find
。
编辑:find
将不起作用,因为您要查找的标签不是text-wrapper
的子级。您需要手动遍历DOM来查找元素。
jQuery(this).next('div').find("a.second").text();
发布于 2012-03-06 01:40:46
closest()
遍历DOM树,从节点本身开始,然后是parentNode、父节点的parentNode,依此类推。您要查找的函数是find()
,它搜索给定节点的后代。
编辑以确保完整性:
由于a.second
不是.text-wrapper
的后代,因此您必须首先调用next()
,它将返回.text-wrapper
的下一个兄弟元素,即包含a.second
的div元素。
jQuery(this).next().find('a.second').text()
发布于 2012-03-06 01:48:32
工作解决方案的完整jsFiddle,包括控制台日志中显示的两个链接:http://jsfiddle.net/3rH63/
https://stackoverflow.com/questions/9571254
复制相似问题