我的HTML看起来像这样:
<div class='textbox' data-title='Sometitle'>
<div class='textareaedit'>
<p><strong>Test sample text</strong></p>
</div>
</div>
我有时会在<p>
div中包含一些不同的textareaedit
标记,有时会在strong
内的文本周围添加<p>
个标记(如此示例),有时候是span
标记,有时它会在<p>
内没有其他标记。
我想遍历我页面上的每个textbox
,抓取其标题以及嵌套在<p>
中的textareaedit
标记内的文字。我通过控制台提供输出以进行测试。
这是我的jQuery代码,但是第二行console.log()
行没有输出:
$('.textbox').each(function() {
$this = $(this);
console.log($this.attr('data-title')+ ":\n");
$this.children('textareadit').children('p').each(function(){
console.log($(this).html()); // not giving any output, it's blank
});
});
我也试过$(this).text()
,但没有区别。您可能认为此示例在<strong>
内的<p>
标记内包含示例文本,但我也尝试过没有强项的相同示例,其中文本是<p>
的直接子项,但它没有什么区别。我如何捕获文本?
答案 0 :(得分:2)
传递给children()
函数的类选择器在类名之前缺少.
。课程名称中也存在拼写错误,textareadit
应为textareaedit
。
$this.children('.textareaedit').children('p').each(function(){
console.log($(this).html()); // not giving any output, it's blank
});
答案 1 :(得分:1)
您可以使用find()
方法找到它。尝试这样的事情:
$this.find('.textareadit > p').each(function(){
console.log($(this).html());
});
答案 2 :(得分:1)
.children('textareadit')
应为:
.children('.textareadit')
当你选择一个班级时
答案 3 :(得分:1)
班级名称拼写错误
.children('textareadit') should be .children('.textareaedit')
答案 4 :(得分:1)
您的选择器中缺少.
,而textareadit
中存在拼写错误。正确的应该是 -
$this.children('.textareaedit').children('p').each(function(){
console.log($(this).html()); // now it prints
});
您将class selector
作为参数传递给第一个children
调用,因此您应该在其前面加上.
,因为这是类选择器的工作方式。