JQuery, если элемент содержит что-то, делать вещи - PullRequest
3 голосов
/ 06 октября 2011

Я не могу заставить это работать. Я просто хочу отобразить предупреждение для целей тестирования, если предлагаемый td содержит «ОН».

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

Ответы [ 2 ]

9 голосов
/ 06 октября 2011

Потому что он вернет true, даже если элемент не найден. Попробуйте это:

$(document).ready(function() {
    if ($("#v65-cart-shipping-details tr:eq(2) td:contains('OH')").length) {
      alert("Did Stuff") }  
});
0 голосов
/ 06 октября 2011

Вы должны быть осторожны здесь.Если эта таблица огромна в 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'); 
...