Tenho um evento de alteração que está funcionando bem, mas preciso obtê-lo novamente.
Portanto, eu tenho uma função que é acionada na mudança que "alterará" outras listas suspensas com base em um seletor de classe (observe "lista suspensa S", pode haver mais de uma). Essa alteração de proxy não aciona a função e, portanto, falha. Como posso fazê-lo funcionar?
Código
$(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);
}
}
}
As sugestões até agora parecem funcionar, mas como o evento de mudança aciona uma postagem do ajax, agora parece falhar aqui. Eu vou brincar com isso, mas isso é algo para outra pergunta que eu sinto.
javascript
jquery
javascript-events
4imble
fonte
fonte
Respostas:
Use o método trigger ()
fonte
change()
? Ou é apenas preferência?para mim
$('#element').val('...').change()
é o melhor caminho.fonte
A forma sem parâmetros do método change () aciona um
change
evento. Você pode escrever algo como:fonte
.mudança()
.trigger ("alteração")
Alternativa mais lenta e mais longa , melhor para abstração.
.trigger ("alteração")
fonte
Use isso :
OU
OU
O acionador pode ser qualquer evento compatível com javascript. Espero que seja fácil de entender para todos.
fonte