使用jQuery获取span内的特定文本

时间:2016-03-15 07:54:27

标签: javascript jquery html

下面是生成的动态表的示例td。 我需要迭代tds以匹配'Result'值,并检查是否填充了相应的'Result'值。

如果未填充span class="taglist",则不会有<td class="indent0"> Data1 <span class="aspect-data"> <span class="taglist">Result1</span> </span> <td class="indent0"> Data2 <span class="aspect-data"> <span class="taglist">Result2</span> </span> 元素。

'Result'

我尝试使用以下代码进行迭代,该代码会警告所有'Data'值,但我只需要获取给定$('.indent0').each(function() { var celltext = $(this).html(); if (celltext = "Data1") { var spantext = $(this).find(".taglist").html(); if (spantext != null) { alert(spantext); } } }); 的相应值。

this.tileLayer1 = new Tile[this.tilesY, this.tilesX];

3 个答案:

答案 0 :(得分:2)

您遇到的问题是DataX未包含在特定元素中,因此您需要获取文本节点并根据您要查找的值检查该文本节点的文本值。

另请注意,您使用=设置值而不是==来比较if条件中的值,并且您的HTML缺少某些</td>标签。试试这个:

$('.indent0').each(function() {
    var celltext = $(this).contents()[0].nodeValue.trim();
    if (celltext == "Data1") {
        var spantext = $(this).find(".taglist").html();
        if (spantext != null) {
            alert(spantext);
        }
    }
});

Working example

答案 1 :(得分:1)

尝试使用contents

$('.indent0').each(function() {
    var celltext = $(this).contents().first()[0].textContent;  //this line has changed
    if (celltext == "Data1") {
        var spantext = $(this).find(".taglist").html();
        if (spantext != null) {
            alert(spantext);
        }
    }  
});

$('.indent0').each(function() {
    var celltext = $(this).contents()[0].nodeValue;  //this line has changed
    if (celltext == "Data1") {
        var spantext = $(this).find(".taglist").html();
        if (spantext != null) {
            alert(spantext);
        }
    }  
});

答案 2 :(得分:1)

您可以像以下一样使用startsWith()

&#13;
&#13;
$('.indent0').each(function () {
    var celltext = $(this).text().trim(); // change here
    if (celltext.startsWith("Data1")) {  // change here
        var spantext = $(this).find(".taglist").html();
        if (spantext != null) {
            alert(spantext);
        }
    }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
    <tr>
        <td class="indent0">
            Data1
            <span class="aspect-data">
                <span class="taglist">Result1</span>
            </span>
        </td>
        <td class="indent0">
            Data2
            <span class="aspect-data">
                <span class="taglist">Result2</span>
            </span>
        </td>
    </tr>
</table>
&#13;
&#13;
&#13;