如何在jquery中onclick
中的嵌套文件中获取文本
我的代码如下,
当我点击li时,我需要获取当前的li文本,
$('.selectRow li').on('click', function() {
var textSelected = $(this).text();
console.log(textSelected)
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="selectRow">
<li>test-1</li>
<li>test-2</li>
<li>test-3
<ul>
<li>test-3.1</li>
<li>test-3.2</li>
<li>test-3.3</li>
<li>test-3.4</li>
</ul>
</li>
<li>test-4</li>
<li>test-5</li>
<li>test-6
<ul>
<li>test-6.1</li>
<li>test-6.2</li>
<li>test-6.3</li>
<li>test-6.4</li>
</ul>
</li>
</ul>
我获取当前的li文本onclick,但是如果我点击子菜单li我也得到所有父li文本和子菜单文本。任何人都可以告诉我解决方案。
答案 0 :(得分:2)
既然你没有找到我找到的解决方案,我已经为你做了这个例子:
$('.selectRow li').on('click', function(e) {
if (e.target == e.currentTarget) {
var textSelected = $(this)
.clone() //clone the element
.children() //select all the children
.remove() //remove all the children
.end() //again go back to selected element
.text()
.trim();
console.log(textSelected);
}
})
这只会返回点击的li
<强>演示强>
$('.selectRow li').on('click', function(e) {
if (e.target == e.currentTarget) {
var textSelected = $(this)
.clone() //clone the element
.children() //select all the children
.remove() //remove all the children
.end() //again go back to selected element
.text()
.trim();
console.log(textSelected);
}
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="selectRow">
<li>test-1</li>
<li>test-2</li>
<li>test-3
<ul>
<li>test-3.1</li>
<li>test-3.2</li>
<li>test-3.3</li>
<li>test-3.4</li>
</ul>
</li>
<li>test-4</li>
<li>test-5</li>
<li>test-6
<ul>
<li>test-6.1</li>
<li>test-6.2</li>
<li>test-6.3</li>
<li>test-6.4</li>
</ul>
</li>
</ul>
&#13;
答案 1 :(得分:0)
这里的解决方案
您可以使用事件对象的stopPropagation
方法:
$(document).on('click', '.selectRow li', function(e){
e.stopPropagation();
console.log('li element is clicked');
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="selectRow">
<li>test-1</li>
<li>test-2</li>
<li>test-3
<ul>
<li>test-3.1</li>
<li>test-3.2</li>
<li>test-3.3</li>
<li>test-3.4</li>
</ul>
</li>
<li>test-4</li>
<li>test-5</li>
<li>test-6
<ul>
<li>test-6.1</li>
<li>test-6.2</li>
<li>test-6.3</li>
<li>test-6.4</li>
</ul>
</li>
</ul>
你也会在这里找到答案 Why ul gets triggered when I click on li?