4im*_*ble 170 javascript jquery javascript-events
我有一个工作正常的变更事件,但我需要让它来递减.
所以我有一个在更改时触发的函数,它将根据类选择器"更改"其他下拉菜单(注意"下拉",可能有多个).此代理更改不会触发该功能,因此失败.我怎样才能让它发挥作用?
$(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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,这些建议似乎有效,但随着更改事件触发ajax帖子,它现在似乎在这里失败了.我打算玩它,但这是我感觉到的另一个问题.
Joh*_*ock 368
$(selector).trigger("change");
Run Code Online (Sandbox Code Playgroud)
Fré*_*idi 20
change()方法的无参数形式触发change事件.你可以这样写:
$(document).ready(function() {
$("#yourInitialElementID").change(function() {
// Do something here...
$(".yourDropDownClass").change();
});
});
Run Code Online (Sandbox Code Playgroud)
$(selector).change()
Run Code Online (Sandbox Code Playgroud)
更慢的替代方案,更好的抽象.
$(selector).trigger("change")
Run Code Online (Sandbox Code Playgroud)
使用那个:
$(selector).trigger("change");
Run Code Online (Sandbox Code Playgroud)
要么
$('#id').trigger("click");
Run Code Online (Sandbox Code Playgroud)
要么
$('.class').trigger(event);
Run Code Online (Sandbox Code Playgroud)
触发器可以是javascript支持的任何事件。.希望对您所有人来说都很容易理解。
| 归档时间: |
|
| 查看次数: |
279533 次 |
| 最近记录: |