假设我有一个div容器,其中包含多个具有一定宽度和高度的div。我希望单击div中的文本。
<div id="containId">
<div>Sometext1
<div class="description">This is a desc</div>
</div>
<div>Sometext2
<div class="description">This is a desc</div>
</div>
<div>Sometext3
<div class="description">This is a desc</div>
</div>
<div>Sometext4
<div class="description">This is a desc</div>
</div>
<div>Sometext5
<div class="description">This is a desc</div>
</div>
</div>
如何使用当用户点击containsId中的div时,我可以将文本转换为变量(只是Sometext#部分而不是那些div中的描述div)?
答案 0 :(得分:2)
$("#containId > div").click(function () {
alert(this.firstChild.nodeValue);
});
答案 1 :(得分:1)
使用类似的东西:
$("#containId div").click( function(){
var x = $(this).text();
});
如果您只想使用第一个节点的文本值:
var x = this.firstChild.nodeValue
如果要从点击中排除第二级div,可以使用:
$("#containId div").click( function(){
var x = this.firstChild.nodeValue;
}).find("div").click( function(){
return false;
});
答案 2 :(得分:1)
这应该这样做:
$('#containId > div').click(function() {
var text = $(this).contents().map(function() {
if(this.nodeType !== 3) return null;
return this.nodeValue;
}).get().join('');
});
它的工作方式如下:.contents()
返回一个包含所有子节点的jQuery对象,而不仅仅是元素节点。 .map()
用于过滤掉非文本节点并检索文本节点的文本值。
这将检索所有文本节点的值,而不仅仅是第一个。如果您只想获取第一个文本节点的值,请使用@karim's answer(更简单)。