[英]jQuery - Calling .change(); in javascript code does not fire
在這個問題中,所有代碼都已被概括。
正如問題標題所解釋的,我有一個jQuery函數:
$(document).ready(function() {
if (something) {
// This does something
} else if (something else) {
// This does something else
} else {
// And this does something else
}
});
在此功能中,頁面加載時會檢查網頁上的信息。
我有一個隱藏的輸入,我檢查了一個值。 這可行。
我有2個具有兩個ID(出於參數考慮)的下拉列表:ddl1,ddl2
在MVC 4中,它們將如下所示:
@Html.DropDownListFor(model => model.SelectedValue, Model.List1, new { id = "ddl1" })
@Html.DropDownListFor(model => model.SelectedValue, Model.List2, new { id = "ddl2" })
接下來,相應地,我有兩個On Change jQuery方法:
$("#ddl1").change(function () {
// Does something when the index of the first drop down changes
});
$("#ddl2").change(function () {
// Does something when the index of the second drop down changes
});
當我更改頁面上的索引時,這些方法將觸發。 現在,這是我的問題起作用的地方。
在我的$(document).ready()
函數中,我從此方法調用那些On Change函數,它不會觸發...
$(document).ready(function() {
if (something) {
if (condition for ddl1) {
$("#ddl1").change(); // Does not fire.
} else {
$("#ddl2").change(); // Does not fire.
}
} else if (something else) {
// This does something else
} else {
// And this does something else
}
});
對我來說,為什么這些功能沒有觸發是沒有意義的。
這是直接方法調用。
如果有人能對此事有所啟發,我將不勝感激。
干杯。
使用jQuery觸發更改方法的正確方法是使用觸發函數,這種方式是:
$(document).ready(function() {
if (something) {
if (condition for ddl1) {
$("#ddl1").trigger("change"); // TRIGGER change event
} else {
$("#ddl2").trigger("change"); // TRIGGER change event
}
} else if (something else) {
// This does something else
} else {
// And this does something else
}
});
此處提供更多信息: http : //api.jquery.com/trigger/
我修改了代碼以執行以下操作(我只使用普通的javascript,因為我沒有時間弄清楚為什么這是一個問題):
1)我將on jQuery方法更改為普通的javascript函數:從:
$("#ddl1").change(function () { /*code*/ });
至:
function changeDdl1 () { /*code*/ }
2)我取出了觸發器,僅添加了一個JavaScript調用:發件人:
$("#ddl1").trigger("change");
至:
changeDdl1();
3)我在下拉列表中添加了@onchange MVC 4屬性:
@Html.DropDownListFor(model => model.SelectedValue, Model.List1,
new { id = "ddl1", @onchange = "changeDdl1();"})
謝謝所有提供幫助和提示的人。
干杯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.