В моем переписывании вы заметите несколько вещей.
- Я пропустил
$('body').find()
, потому что это не дает вам никакого преимущества по сравнению с выбором #p_Selection
напрямую. - При выборе значений
input
с использованием функции $()
я добавляю this
в качестве второго аргумента.Это в основном говорит jQuery искать входные данные в пределах this
(который в данном случае ссылается на текущий tr
в каждом цикле. Преимущество здесь в том, что jQuery не нужно искать во всем DOM для этого конкретного ввода,только внутри текущего тега tr
. - Я только что немного очистил вашу логику if / else с помощью оператора
switch
и некоторых операторов ||
.
Я думаючто теперь это должно работать быстрее.
<script type="text/javascript">
$(function() {
$('#p_Selection').live('change', function() {
var type = $(this).val();
var Record_LidExpected,
Record_LidObtained,
Record_QuantityExpected,
Record_QuantityObtained;
$('.goods .detail-child tr').each(function(index) {
Record_LidExpected = $('input[id$=Record['+index+']_LidExpected]', this).val();
Record_LidObtained = $('input[id$=Record[' + index + ']_LidObtained]', this).val();
Record_QuantityExpected = $('input[id$=Record[' + index + ']_QuantityExpected]', this).val();
Record_QuantityObtained = $('input[id$=Record[' + index + ']_QuantityObtained]', this).val();
switch(type) {
case "1" :
if (Record_LidExpected != Record_LidObtained || Record_QuantityExpected != Record_QuantityObtained) {
$(this).hide();
}
break;
case "2" :
if (Record_LidExpected == Record_LidObtained || Record_QuantityExpected == Record_QuantityObtained) {
$(this).hide();
}
break;
case "0":
$(this).show();
break;
}
});
});
});
</script>