我有一个ul
列表,其中li
位于li
,div
文本和same
位于其中。 li
课程已分配到div
,而li
则分配了不同的课程名称。
我只想从div
而不是$("ul li").on('click', function() {
$("span").text($(this).text());
});
获取文字。
这是片段:
ul {
position: relative
}
div {
position: absolute;
right: 0px;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li class='same'>Text1
<div class='notsame'>Other text</div>
</li>
<li class='same'>Text2
<div class='notsame'>Other text</div>
</li>
<li class='same'>Text3
<div class='notsame'>Other text</div>
</li>
</ul>
<span> </span>
&#13;
SIMAccountInfo accountInfo =message.getHeaders().get("accountInfo");
stateMachine.getExtendedState().getVariables().put("acc", accountInfo);
&#13;
我得到了O / P,而div里面的文字也是如何避免的?
答案 0 :(得分:5)
从li
过滤掉文本节点 - 请参阅下面的演示:
$("ul li").on('click', function() {
$("span").text($(this).contents().filter(function(){
return this.nodeType == 3; // select text nodes
}).text()); // paste all of them to the span
});
ul {
position: relative
}
div {
position: absolute;
right: 0px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li class='same'>Text1
<div class='notsame'>Other text</div>
</li>
<li class='same'>Text2
<div class='notsame'>Other text</div> and more
</li>
<li class='same'>Text3
<div class='notsame'>Other text</div>
</li>
</ul>
<span> </span>
答案 1 :(得分:1)
使用$(this).clone()。children()。remove()。end()。text()获取外部元素的文本
$("ul li").on('click', function() {
$("span").text($(this).clone().children().remove().end().text());
});
&#13;
ul {
position: relative
}
div {
position: absolute;
right: 0px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li class='same'>Text1
<div class='notsame'>Other text</div>
</li>
<li class='same'>Text2
<div class='notsame'>Other text</div>
</li>
<li class='same'>Text3
<div class='notsame'>Other text</div>
</li>
<ul>
<span> </span>
&#13;
答案 2 :(得分:0)
我首选的解决方案是在内存中创建元素的克隆,并在读取内容之前将其删除。
在你的情况下:
$( "ul li" ).on( 'click' , function() {
$( "span" ).text( $(this).clone().children().remove().end().text() );
});
我推荐这种解决方案,因为它是单行的。