#jquery
#jquery
Вопрос:
У меня есть эта функция :
$('.trackInputHours').change(function() {
var changeVal=$(this).val();
$(this).closest('.trackOn').nextAll('.trackOn').find('.trackInputHours').val(function(i, v){
if((v=='??') || (v<changeVal)) {
return changeVal;
}
});
});
и я хотел бы, nextAll()
когда v==changeVal
, прервать; сохраняя старые значения этих элементов.
Своего рода } else break
;
Как я могу это сделать?
Комментарии:
1. вы имеете в виду продолжить работу со стеком $ (this).closest(‘.trackOn’)?
2. Итак, вы хотели бы выбрать все
.trackOn
элементы после$(this).closest('.trackOn')
, которые не содержат.trackInputHours
элемента со значением, равнымchangeVal
, которое является значением.trackInputHours
элемента, который только что был изменен?3. Я имею в виду, что не проверяет дочерние элементы trackInputHours для divs следующего трекона
4. @kwichz Вы говорите, что хотите остановиться, когда найдете элемент, где
v==changeVal
. То есть вы специально хотите игнорировать.trackInputHours
последующие, даже если их значение меньше?5. ДА… также, если они меньше…
Ответ №1:
Как насчет того, чтобы просто использовать .each()
и использовать return false
для остановки итерации.
$('.trackInputHours').change(function() {
var changeVal=$(this).val();
$(this).closest('.trackOn').nextAll('.trackOn').find('.trackInputHours').each(function(){
var v = $(this).val();
if((v=='??') || (v<changeVal)) {
$(this).val(changeVal);
}
if(changeVal == v){
return false;
}
});
});
введите 5, и он изменит все <input type="text"/>
, пока не достигнет 5
Комментарии:
1. Да, это работает. Но странно? .each() следует применять к текущему элементу nextAll, а не к стеку nextAll :O
Ответ №2:
Возможно, вместо nextAll функция nextUntil выполняет то, что вы хотите?
Комментарии:
1. Но он также проверяет условие вместо элементов DOM?