【问题标题】:jQuery if element contains something, do stuffjQuery如果元素包含一些东西,做一些事情
【发布时间】:2011-12-02 07:23:56
【问题描述】:

我无法让它工作。如果提议的td 包含“OH”,我只想显示一个警报以用于测试目的。

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

无论里面有什么(即美国,MI 48187),警报仍然会弹出,我错过了什么?

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

【问题讨论】:

    标签: jquery if-statement contains


    【解决方案1】:

    因为即使没有找到元素它也会返回 true。试试这个:

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

    【讨论】:

    • 哇,我一直盯着我的代码很久了,我可以发誓我增加了长度,谢谢你的第二双眼睛!
    • 好吧,它不会真正返回undefined,它只是返回一个空数组,计算结果为true,你的解决方案确实解决了这个问题,所以+1
    【解决方案2】:

    你必须在这里小心。如果该表在 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'); 
    

    【讨论】:

      猜你喜欢
      • 2011-08-11
      • 2016-09-22
      • 2013-10-27
      • 1970-01-01
      • 2021-02-24
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      相关资源
      最近更新 更多