希望这是有道理的......
我有一个加载对话框的页面。对话框的shell实际上位于主页面的HTML中(显示:无)。在对话框中,我通过以下调用加载了部分视图。
$('.partial').load(url, function (html) { $('.partial')[0].value = html; });
此局部视图有两个选择框。当第一个更改时,第二个应该通过.getJason调用填充。那个电话就在下面。
$.getJSON(url, function (result) {
var dropList = $("#select");
var options = "";
$.each(result, function () {
options += '<option value="' + this.ID + '">' + this.Name+'</option>';
});
$("#select2").empty().append(options); // doesn't work located on the partial view
$("#test2").empty().append(options); // works located on main page
});
.getJason调用是通过onChange =“populateSecondSelect()”的函数调用的,因为部分视图在页面初始加载后加载(.on在这种情况下不起作用)。
问题是我尝试将选项加载到第二个选择中的部分。 jQuery .append无法识别该元素。我知道调用正在工作,因为当我尝试加载主页面上的“Test2”中的值时,它会起作用。
如何让jQuery在该加载的局部视图上识别.append的元素?
答案 0 :(得分:1)
您是正确的,如果以后加载内容,on
方法通常不起作用。但是,on
方法可以直接附加到document
对象,该对象允许将事件附加到选择器,即使它们尚未添加到DOM中。
$(document).on("change", "#select", populateSecondSelect);
虽然需要使用此方法将事件绑定到动态加载的元素,但只需选择元素并附加html即可按预期工作。我怀疑你的代码中的其他地方可能存在问题。尝试发布JSFiddle更完整的代码示例。
答案 1 :(得分:0)
好的,我想出了一个解决方法。我的想法是我需要填充第二个选择框,因为我需要将它与docuemnt.on调用绑定,我在实际的select语句中使用了mousedown。
$(document).on("mousedown", "#select2", function (){
if(options != "") { // that options is "global"
$(this).empty().append(options);
options = "";
}
});
这完全填补了它。好的,耶!现在,问题是第二个选择选项将在第一个选择被更改时显示。我想这将是必须的。 :(