редактировать значение элемента с условием

#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. ах, хорошо … но здесь я мог бы избавиться от этой переменной, нет? 🙂