#jquery
#jquery
Вопрос:
У меня есть этот код :
<script type="text/javascript">
$(document).ready(function() {
$('.trackInputHours').change(function() {
$(this).closest('.trackOn').nextAll('.trackOn').find('.trackInputHours').val($(this).val());
});
});
</script>
и я хотел бы изменить значение (с помощью val($(this).val())
), только если значение для этого элемента ??
или меньше нового значения.
Возможно ли это с каким-либо условием в val()? Или какая стратегия лучше?
Комментарии:
1. у вас есть какой-нибудь живой код? Я не понял, чего вы хотите…
Ответ №1:
Используйте val
опцию обратного вызова.
$('.trackInputHours').change(function() {
var changeVal = $(this).val();
$(this).closest('.trackOn')
.nextAll('.trackOn').find('.trackInputHours')
.val(function(i, v){
if (v == '??' || v < changeVal) // note: you may need to parse here
return changeVal;
return v;
});
});
Комментарии:
1. Кажется, работает! Но почему вы передаете переменную
i
в функцию val?2. @markzzz —
i
является текущим индексом в стеке элементов. Обычно для функций обратного вызова, которые выполняют какое-либо действие над массивом, индекс в массиве передается в качестве аргумента функции.3. ах, хорошо … но здесь я мог бы избавиться от этой переменной, нет? 🙂