2013-03-27 3 views
0

Я пытаюсь к нам JQuery, чтобы скрыть или показать что-то, если меньше или больше, чем 20000скрыть/показать DIV, если меньше или больше, чем определенное число, используя JQuery

Это элемент таблицы я использую. Td.weight заполняется динамически, используя пользовательский калькулятор доставки. Существует максимальный вес, возвращаемый api 20000 фунтов, а затем он равен нулю.

Я пытаюсь, чтобы уведомить пользователя, скрывая или показывая DIV, если их расчетный вес составляет более 20000 фунтов или меньше, чем 20000 фунтов

Показать div.shipping-вес, если этот выход:

<td class="weight"> 20000 <small><em> lb's </em></small><br> 
<div class="shipping-weight"><small>*Note: Up to 20,000 lbs max. For shipping requirements over 20,000 lb's call our</small><br> 
<small>PRICING HOTLINE: 1-877-444-444 </small> 
</div> 
</td> 

Скрыть div.shipping вес, если этот выход:

<td class="weight"> 19456 <small><em> lb's </em></small><br> 
<div class="shipping-weight"><small>*Note: Up to 20,000 lbs max. For shipping requirements over 20,000 lb's call our</small><br> 
<small>PRICING HOTLINE: 1-877-444-444 </small> 
</div> 
</td> 

Вот то, что я до сих пор.

$('td.weight').filter(function(index){ 
return parseInt(this.innerHTML) > 20000; 
    }).show('.shipping-weight'); 

Вот jsfiddel

* Редакция:

Это не похоже на огонь в моей просьбе AJAX, но работает на jsfiddle. Чтобы выполнить запрос, я использую keyup и livequery. Как следует:

 $('.input-mini').keyup().livequery('change', function() { 
       url = $(this.form).attr('action'); 
       data = $(this.form).serialize(); 
       $.post(url, data, function() { 
         $('#checkout').load('/store/checkout_table'); 
         $('#checkout_form').attr('action', url); 
    $('.weight').filter(function(index){ 
     var num = parseInt(this.firstChild.textContent); 
     return num >= 20000; 
    }).find('.shipping-weight').show(); 

      $.cookie('all_cookie', null); 

       }); 
       return false; 
     }); 
+0

Обеспечить jsfiddle.net демо –

ответ

0

Working solution:

$('.weight').filter(function(){ 
    var num = parseInt(this.firstChild.textContent); 
    return num >= 20000; 
}).find('.shipping-weight').show(); 

Примечание: this.firstChild является первым узлом DOM внутри .weight, например, текстовый узел " 19456 ".

+0

Это отлично! Он работает на скрипке, но я оставил один элемент. Я делаю вызов ajax в таблице, поэтому после его загрузки и изменения значения меньше 20000, результат начального jQuery все еще отображается. Возможно, я должен включить js внутри страницы, запрашиваемой ajax. Еще раз спасибо! Я бы проголосовал за это, но мне пока не разрешено. –

+0

_ «Возможно, я должен включить js внутри страницы, запрашиваемой ajax» _. Лучше всего вы включаете эту функцию переключения в свой обработчик успеха ajax;). – Simon

+0

Добавление его в запрошенную ajax страницу с готовым документом сделало трюк. Еще раз спасибо! –

0

Попробуйте

<table> 
    <tr> 
     <td class="weight"> <SPAN>**200230**</SPAN> <small><em> lb's </em></small><br> 
      <div class="shipping-weight"><small>*Note: Up to 20,000 lbs max. For shipping requirements over 20,000 lb's call our</small><br> 
       <small>PRICING HOTLINE: 1-877-444-444 </small> 
      </div> 
     </td> 
    </tr> 
</table> 


<script type='text/javascript'> 
    $(document).ready(function() { 
     var weight = parseInt($('td.weight span').html().replace(/\*/g, '')); 
     if(weight >= 2000){ 
      $('div.shipping-weight').show(); 
     } else { 
      $('div.shipping-weight').hide(); 
     } 

    }); 
</script> 
+0

Спасибо, это работает, но у меня проблемы с удалением div на ajax reload. Возможно, мне придется изменить свой вопрос. Я использую функцию keyup на входе для повторной загрузки страницы с помощью ajax-запроса. По какой-то причине при перезагрузке js не запускается при втором загрузке. –

0
$('.weight').filter(function() { 
     var weight = parseInt(this.firstChild.textContent); 
     if (weight >= 20000) { 
     $('.shipping-weight').show(); 
     } else { 
     $('.shipping-weight').hide(); 
     } 
    }); 
+0

http://jsfiddle.net/shaikrasool/b329D/1/ -fiddle lnk –