#jquery
#jquery
Вопрос:
У меня есть этот код :
<div class="trackOn" id="line1">
<span class="trackCounter">1</span>
<span class="trackTime1">
<select name="hours[]" class="trackInputDate" onChange="updateHours(this.value)" >
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</span>
<span class="trackTime2"></span>
<span class="trackTime3"></span>
</div>
<div class="trackOn" id="line2">
<span class="trackCounter">2</span>
<span class="trackTime1">
<select name="hours[]" class="trackInputDate" onChange="updateHours(this.value)" >
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</span>
<span class="trackTime2"></span>
<span class="trackTime3"></span>
</div>
<div class="trackOn" id="line3">
<span class="trackCounter">3</span>
<span class="trackTime1">
<select name="hours[]" class="trackInputDate" onChange="updateHours(this.value)" >
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</span>
<span class="trackTime2"></span>
<span class="trackTime3"></span>
</div>
<div class="trackOn" id="line4">
<span class="trackCounter">4</span>
<span class="trackTime1">
<select name="hours[]" class="trackInputDate" onChange="updateHours(this.value)" >
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</span>
<span class="trackTime2"></span>
<span class="trackTime3"></span>
</div>
теперь, например, если я выберу значение 3
из #line2
, я хотел бы изменить значение следующего поля выбора (таким образом, те, что на #line3
и #line4
) в 3
.
Ответ №1:
Было бы лучше прикрепить обработчик событий с помощью jQuery:
$('.trackInputDate').change(function() {
updateHours($(this).val()); // or was `updateHours` supposed to be the
// function that should handler the update?
$(this).closest('.trackOn')
.nextAll('.trackOn')
.find('.trackInputDate').val($(this).val());
});
Ссылка: .closest
, .nextAll
, .find
DOM должен быть полностью проанализирован, прежде чем вы сможете подключить обработчики событий. Итак, либо поместите код в ready()
обработчик событий:
$(function() {
// code here
});
или поместите это внизу страницы.
Комментарии:
1. Да, функция updateHours() была функцией, но я могу избежать этого и использовать этот обработчик событий… намного лучше 🙂 в любом случае, я получаю эту ошибку
Object #<an HTMLSelectElement> has no method 'val'
2. В настоящее время у меня проблемы с подключением к jsfiddle. net но я предоставлю демо-версию, как только смогу.
3. @markzzz: Ах, это опечатка, я забыл
$
перед(this)
. Исправлено.4. 🙂 Да, но он не может получить значение select.
$(this).val()
не выводите значение…5. @markzzz: У меня это работает. Убедитесь, что код находится в
document.ready
обработчике или внизу страницы. Или я не понимаю вашу проблему.