У меня есть событие изменения, которое работает нормально, но мне нужно, чтобы оно повторилось.
Так что у меня есть функция, которая срабатывает при изменении, которая будет «изменять» другие выпадающие списки на основе селектора класса (обратите внимание, «drop downS», их может быть больше одного). Это изменение прокси не запускает функцию и поэтому завершается ошибкой. Как я могу заставить его работать?
Код
$(document).ready(function () {
var activeDropBox = null;
$("select.drop-box").change(function () {
var questionId = $(this).attr("questionId");
var selectedAnswer = $(this).val();
activeDropBox = this;
alert(this.questionId);
$.ajax(
{
type: "POST",
url: answerChangedActionUrl,
data: { questionId: questionId, selectedValue: selectedAnswer },
success: function (data) {
SetElementVisibility(data.ShowElement, questionId);
}, error: function (XMLHttpRequest, textStatus, errorThrown) {
alert('XMLHttpRequest:' + XMLHttpRequest.responseText);
alert('textStatus:' + textStatus);
alert('errorThrown:' + errorThrown);
}
});
});
function SetElementVisibility(visible, questionId) {
// I would like each child to then trigger the change event...
$(".childOf" + questionId)[visible ? 'show' : 'hide']('slow');
// Suggested code
//$(".childOf" + questionId + " select").trigger("change");
if (!visible) {
$(".childOf" + questionId + " select").attr('selectedIndex', 0);
}
}
}
Похоже, что предложения пока работают, но поскольку событие change вызывает сообщение ajax, теперь оно, похоже, терпит неудачу. Я собираюсь поиграть с этим, но это другой вопрос, который я чувствую.
Ответы:
Используйте метод trigger ()
источник
change()
? Или это просто предпочтение?для меня
$('#element').val('...').change()
это лучший способ.источник
Беспараметрическая форма метода change () вызывает
change
событие. Вы можете написать что-то вроде:источник
.изменение()
.trigger ( "Изменение")
Более медленная альтернатива, лучше для абстракции.
.trigger ( "Изменение")
источник
Используйте это:
ИЛИ
ИЛИ
Триггером может быть любое событие, которое поддерживает javascript. Надеюсь, что это легко понять всем вам.
источник