如何在jquery中获取列表项的最顶端父项的文本
How to get the text of the top most parent of list item in jquery?
我有以下ul list
的设计。
<ul>
<li class="category">
Design
<ul>
<li>Graphic Design</li>
<li>Web Design </li>
<li>HTML</li>
<li>CSS</li>
<li>Print</li>
</ul>
</li>
<li class="category">
Development
<ul>
<li>PHP</li>
<li>Java</li>
</ul>
</li>
</ul>
现在我想要的是,如果你点击"CSS"项目,我想得到它的父项的文本,即"设计"。我尝试了以下代码,但我得到了完整的列表。
$('ul').on("click", "li", function (e) {
console.log("Child Clicked: "+$(this).text()+" Parent: "+$(this).parents(".category").text());
});
尝试更换此部件
$(this).parents(".category").text()
带有
$(this).parents(".category")[0].childNodes[0].textContent;
childNodes返回包括文本节点在内的所有子元素。
如果您只想使用jQuery,那么将此文本节点包装在跨度中
<ul>
<li class="category">
<span>Design</span>
<ul>
<li>Graphic Design</li>
<li>Web Design </li>
<li>HTML</li>
<li>CSS</li>
<li>Print</li>
</ul>
</li>
<li class="category">
<span>Development</span>
<ul>
<li>PHP</li>
<li>Java</li>
</ul>
</li>
</ul>
并使用获取第一个节点的文本
$(this).parents(".category span").html()
另一种方法可以是使用jquery 的contents
和filter
$(this).parents(".category").contents().filter(function() {
return this.nodeType == 3;
}).nodeValue;
仅更改:
console.log("Child Clicked: "+$(this).text()+" Parent: "+$(this).parents(".category").text());
带有:
console.log("Child Clicked: "+$(this).text()+" Parent: "+$(this).parent().text());
相关文章:
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 如何在从多选下拉列表中选择选项值时动态生成文本框
- ng在下拉列表和文本区域提交
- 如何在剑道下拉列表中按文本和值搜索
- 如何在ReactJs中链接下拉列表和文本区域
- 使用 jQuery 从下拉列表中获取所选文本
- 根据用户从下拉列表中的选择显示多个文本框
- 如何在jquery中获取列表项的最顶端父项的文本
- 如何在下拉列表更改时自动填充mysql查询结果中的文本框值
- 如何按骨干.js打印“此”列表项的文本
- 从文本文件js中读取列表
- 使用两个下拉列表的值填充文本框
- 如果没有从下拉列表中选择任何值,则允许使用php、mysql、javascript将文本框添加到mysql表中
- 将文本框/单选按钮/和下拉列表中的信息添加到dataTable
- Meteor:从Twilio获取SMS文本列表,并将它们插入mongoDB
- 将URL的文本列表转换为可点击的HTML链接
- 生成重新格式化的文本列表
- 为什么ava在比较对象列表和对象文本列表时失败
- 如何在用户在文本列表中键入单词时突出显示JSON字典中的单词,并在表单提交时用它们的描述替换它们
- 更改图像链接悬停在文本列表