jQuery 如果元素包含某些内容,就执行某些操作。

3

我无法让它正常工作。 我只是想为测试目的显示一个警报,如果提议的td包含"OH"。

 <table id="v65-cart-shipping-details">
     <tr>..</tr>
     <tr>..</tr>
     <tr>
       <td>United States, OH 43112</td>
     <tr>
  </table>

无论里面填入什么(例如:United States, MI 48187),警报仍会弹出,我错过了什么吗?
$(document).ready(function() {
    if ($("#v65-cart-shipping-details tr:eq(2) td:contains('OH')")) {
      alert("Did Stuff") }  
});
2个回答

9

因为当元素未被找到时,它仍会返回true。请尝试以下代码:

$(document).ready(function() {
    if ($("#v65-cart-shipping-details tr:eq(2) td:contains('OH')").length) {
      alert("Did Stuff") }  
});

哇,我一直盯着我的代码看了很久,本来以为我添加了长度,感谢你成为第二双眼睛! - ToddN
它实际上不会返回 undefined,而是返回一个空数组,该数组被评估为 true。但是你的解决方案确实解决了这个问题,所以加一分。 - aziz punjani

0

这里需要小心一些。如果这个表格在HTML中非常庞大,这可能会导致浏览器崩溃(即IE8-)。如果您正在生成HTML,则更快的方法是像这样格式化地址单元格:

 <tr class="address" data-state="OH" data-zip="43112" ... >
   <td>United States, OH 43112</td>
 <tr>

然后你可以轻松地选择它:

if( $("#v65-cart-shipping-details tr.address").is('[data-state="OH"]') )
  alert('mom'); 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接