您好我正在尝试动态创建下拉列表并通过ajax调用填充内容,这种工作在某种意义上说,下拉列表是根据需要创建和填充的,但它的“更改”事件不会触发。我发布下面的代码,如果有人能发现明显的东西,请你告诉我 问候
$(document).ready(function () {
$("#positions select").change(function (e) {
alert("in");
var id = $("#category_id").val();
$.getJSON("/Category/GetSubCategories/" + id, function (data) {
if (data.length > 0) {
alert(data.length);
var position = document.getElementById('positions');
var tr = position.insertRow(7);
var td1 = tr.insertCell(-1);
var td = tr.insertCell(-1);
var sel = document.createElement("select");
sel.name = 'sel';
sel.id = 'sel';
sel.setAttribute('class', 'category');
td.appendChild(sel);
$.each(data, function (GetSubCatergories, category) {
$('#sel').append($("<option></option>").
attr("value", category.category_id).
text(category.name));
});
}
});
});
});
答案 0 :(得分:3)
如果您的下拉列表是动态生成的,那么您必须使用 .live() 处理程序绑定更改事件。 live()
为当前或未来与当前选择器匹配的所有元素附加事件的处理程序。
$("positions select").live("change", function(){
});
<强> 修改 强>
获取ID
$(this).attr("id");
获得价值
$(this).val();
获取课程名称
$(this).attr("class");
在更改事件处理程序中。