在这个问题中,所有代码都被概括了 正如问题标题所解释的那样,我有一个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
}
});
对我而言,为什么这些功能没有解雇是没有意义的 这是一个直接的方法调用 如果有人能对这件事情有所了解,我会感激不尽。
干杯。
答案 0 :(得分:-1)
使用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/
答案 1 :(得分:-1)
我修改了我的代码以执行以下操作(我只使用普通的javascript,因为我没有时间弄清楚为什么这是一个问题):
1)我将我的on change 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();"})
感谢所有提供帮助和提示的人。
干杯。