Mam zdarzenie zmiany, które działa poprawnie, ale muszę je powtórzyć.
Mam więc funkcję, która jest wyzwalana przy zmianie, która „zmieni” inne listy rozwijane w oparciu o selektor klas (zauważ: „drop downS”, może być więcej niż jeden). Ta zmiana serwera proxy nie wyzwala funkcji, a więc kończy się niepowodzeniem. Jak mogę to uruchomić?
Kod
$(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);
}
}
}
Dotychczasowe sugestie wydają się działać, ale ponieważ zdarzenie zmiany wyzwala post w Ajax, teraz wydaje się, że zawodzi. Mam zamiar się tym bawić, ale to jest coś na inne pytanie, które czuję.
javascript
jquery
javascript-events
4imble
źródło
źródło
Odpowiedzi:
Użyj metody trigger ()
źródło
change()
? A może to tylko preferencja?dla mnie
$('#element').val('...').change()
to najlepszy sposób.źródło
Bezparametrowa postać metody change () wyzwala
change
zdarzenie. Możesz napisać coś takiego:źródło
.zmiana()
.trigger ("zmiana")
Dłuższa wolniejsza alternatywa, lepsza dla abstrakcji.
.trigger ("zmiana")
źródło
Użyć tego :
LUB
LUB
Wyzwalaczem może być każde zdarzenie, które obsługuje javascript. Mam nadzieję, że jest to łatwe do zrozumienia dla wszystkich.
źródło