我需要获取子div的文本值。
<div id='first'>
<div id='first_child'>A</div>
<div id='second_child'>B</div>
<div id='third_child'>C</div>
</div>
我正试图抓住价值B.我正在尝试这个,但它无法正常工作,
var text_val = $('#first').next('#second_child').val();
答案 0 :(得分:31)
您想使用children()
和text()
代替val()
。虽然,因为你选择的是id(并且id必须是唯一的),你也可以根据id选择而不涉及容器元素。
val()
方法仅适用于输入元素,textareas和choose - 基本上所有包含数据的表单元素。要获取容器的文本内容,您需要使用text()
(或html()
,如果您还想要标记的话。)
var text_val = $('#second_child').text(); //preferred
或
var text_val = $('#first').children('#second_child').text(); // yours, corrected
答案 1 :(得分:7)
next()和nextAll()遍历元素的兄弟,而不是子元素。相反,使用“find()”
var text_val = $('#first').find('#second_child').html();
在处理输入和textareas等元素时使用val()。 html()将返回div下的任何内容(在您的示例中有效)。 text()将返回元素中的文本(在您的示例中也可以使用)。
你的例子也让我怀疑你的设计。如果您将多个ID设置为“#second_child”,则您的html会感到困惑。相反,使用一个类。但是,如果只有一个id“#second_child”,那么您只需要:
var text_val = $('#second_child').text();
答案 2 :(得分:5)
你可以简单地说:
var text_val = $('#second_child').text();
如先前的答案所指出的那样。但是,既然你“需要获取子div的文本值”,我认为子div可能并不总是可用。你可以试试这个:
var text_val = $('#first').children().eq(1).text();
其中1是子div的索引(因为它从零开始计数)
答案 3 :(得分:4)
试试这个......
var text_val = $('#first > #second_child').text();
答案 4 :(得分:4)
简单,
var text_val = $('#second_child').text();
或者你的改变,
var text_val = $('#first').children('#second_child').text();
这将从id“second_child”的div中返回“B”
更新将第二个解决方案更改为children()
而不是nextAll()
。
答案 5 :(得分:1)
对于具有相同ID的多个元素:
var text_val = $('#first').children('#second_child').text();
对于具有特定ID的单个元素:
var text_val = $('#second_child').text();
答案 6 :(得分:0)
........
var text_val = $('#first').children('#second_child').text();
答案 7 :(得分:0)
如果您需要进入列表,请使用:
jQuery('.first > ul > li:nth-child(6)').text();
示例代码获取列表中第6项的值。