Tengo un evento de cambio que funciona bien pero necesito que vuelva a aparecer.
Por lo tanto, tengo una función que se activa en el cambio que "cambiará" otros menús desplegables en función de un selector de clase (observe "menús desplegables S", podría haber más de uno). Este cambio de proxy no activa la función y falla. ¿Cómo puedo hacer que funcione?
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);
}
}
}
Las sugerencias hasta ahora parecen funcionar, pero a medida que el evento de cambio desencadena una publicación ajax, ahora parece fallar aquí. Voy a jugar con eso, pero eso es algo para otra pregunta que siento.
javascript
jquery
javascript-events
4imble
fuente
fuente
Respuestas:
Use el método trigger ()
fuente
change()
? ¿O es solo preferencia?para mi
$('#element').val('...').change()
es la mejor manera.fuente
La forma sin parámetros del método change () desencadena un
change
evento. Puedes escribir algo como:fuente
.cambio()
.trigger ("cambio")
Alternativa más larga y lenta , mejor para la abstracción.
.trigger ("cambio")
fuente
Usa eso :
O
O
Trigger puede ser cualquier evento que soporte JavaScript. Espero que sea fácil de entender para todos ustedes.
fuente