我有以下几点:
<ul id="list">
<li>item1
<ul>
<li>sub1</li>
<li>sub2</li>
</ul>
</li>
</ul>
我想回应一个li点击事件,并在其他地方使用li的文本。然而,如果点击是包含一个嵌套的ul的li,我当然会得到所有元素的文本。
$("#list li").click(function() {
alert($(this).text());
});
按预期返回item1sub1sub2。
如果单击1L,我不知道如何得到’item1’。我尝试了以下(除其他外)没有运气:
$("#list li").click(function() {
alert($(this).filter("ul").text());
});
有任何想法吗?
编辑
这是一个例子的代码片段 – 它可能是多层次深入。我也不想在列表或其他标记中包装列表项文本。
解决方法
这个方法怎么办?克隆对象,删除克隆的孩子,然后找到文本内容。
$("#list li").click(function () {
alert($(this).clone().children().remove().end().text());
}
也许不是最有效的方法,但它是完全直观的,很整洁,你不必用你的HTML。