2016-03-15 68 views
1

以下是生成的动态表的示例td。 我需要遍历tds以匹配'Data'的值,并检查其相应的'Result'值是否已填充。如果没有填充'Result',则不会有span class="taglist"元素。使用jQuery获取范围内的特定文本

<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); 
     } 
    } 
}); 
+0

'如果(CELLTEXT = “数据1”)'是分配;你需要的是if(celltext ==“Data1”)' – SearchAndResQ

回答

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); 
     } 
    } 
}); 
1

可以使用startsWith()像以下。

$('.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); 
 
     } 
 
    } 
 
});
<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>

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