0

我的 HTML 看起来像这样:

<div class='textbox' data-title='Sometitle'>
<div class='textareaedit'>
     <p><strong>Test sample text</strong></p>
</div>
</div>

我有时会在 div 内有几个不同<p>的标签textareaedit,有时会在 divstrong内的文本周围添加标签<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>,但没有任何区别。如何捕获文本?

4

5 回答 5

2

传递给children()函数的类选择器.在类名之前缺少一个。类名也有拼写错误,textareadit应该是textareaedit.

$this.children('.textareaedit').children('p').each(function(){
    console.log($(this).html()); // not giving any output, it's blank
});

示例:http: //jsfiddle.net/aWRaS/

于 2012-12-12T10:59:20.293 回答
1

您可以使用find()方法来定位它。尝试这样的事情:

$this.find('.textareadit > p').each(function(){
    console.log($(this).html());
});
于 2012-12-12T10:59:58.580 回答
1
.children('textareadit')

应该读:

.children('.textareadit')

当您选择课程时

于 2012-12-12T11:01:56.773 回答
1

类名也拼错了

.children('textareadit') should be .children('.textareaedit')
于 2012-12-12T11:06:00.967 回答
1

您的选择器中缺少 a .,并且您的textareadit. 正确的应该是——

$this.children('.textareaedit').children('p').each(function(){
    console.log($(this).html()); // now it prints
});

您将class selector作为参数传递给第一个children调用,因此您应该在它前面加上一个.,因为这是类选择器的工作方式。

JSF中。

于 2012-12-12T11:06:12.770 回答