点击 clickedlicontent
,我需要在以下代码中提醒 thisparenttext<script>
$("#one").live("click",function(){
var partxt=$(this).parent().parent().text();
alert(partxt);
});
</script>
<ul>
<li>thisparenttext<ul><li id="one">clickedlicontent</li></ul></li>
<li>bb</li>
</ul>
换句话说,我只想要点击li的第一个父母的文本,而不是所有的html代码。
答案 0 :(得分:3)
您需要做的是克隆元素,删除所有子元素并使用$.text()
获取剩余文本:
$("#one").live("click", function(){
var partxt = $(this).parent().parent().clone().children().remove().end().text();
alert(partxt);
});
这将获取父级的父级并克隆它。这样,当我们.children().remove()
时,它不会影响显示的元素。 .end()
将“重新选择”$(this)
的父级的父级,.text()
获取文字。
答案 1 :(得分:2)
你可以试试这个。
$("#one").live("click",function(){
//It will filter parent li's content to get only text node and get its text
var partxt = $(this).parent().parent().contents().filter(function(){
//return true only if text node
return this.nodeType == 3;
}).text();
alert(partxt);
});
工作演示 - http://jsfiddle.net/TpdfA/
旁注:
如果您使用的是jQuyer ver 1.7+,那么建议使用on
,否则您可以使用委托而不是live
。
使用delegate()
//Instead of document you can specify any parent container of dynamic elements
$(document).delegate("#one", "click",function(){
//It will filter parent li's content to get only text node and get its text
var partxt = $(this).parent().parent().contents().filter(function(){
//return true only if text node
return this.nodeType == 3;
}).text();
alert(partxt);
});
使用on()
(jQuery ver 1.7 +)
//Instead of document you can specify any parent container of dynamic elements
$(document).on("click", "#one",function(){
//It will filter parent li's content to get only text node and get its text
var partxt = $(this).parent().parent().contents().filter(function(){
//return true only if text node
return this.nodeType == 3;
}).text();
alert(partxt);
});
参考文献:
delegate()
- http://api.jquery.com/delegate/ on()
- http://api.jquery.com/on/ 答案 2 :(得分:1)
这变成了一个有趣的链
Dem0:http://jsfiddle.net/fut7y/
$('#one').click(function() {
var topLevelText = $(this).parent().parent().clone().children().remove().end().text();
alert(topLevelText);
});
答案 3 :(得分:1)
获取HTML,将其转换为字符串,然后拆分第一个HTML开始标记,然后选择数组的第一个值以获取第一个文本字符串。
$(document).on("click", "#one", function(){
var partxt = new String($(this).parent().parent().html()).split('<')[0];
alert(partxt);
});