我遇到了这个jQuery函数的问题,重命名下拉列表的id,类和名称的函数部分只适用于第一个下拉列表,后续版本不起作用,有什么想法吗?
我怀疑它可能与cat.parent_id中的命名约定有关,但它是asp.net mvc模型绑定所必需的。
$(document).ready(function () {
$("table select").live("change", function () {
var id = $(this).attr('id');
if ($(this).attr('classname') != "selected") {
var rowIndex = $(this).closest('tr').prevAll().length;
$.getJSON("/Category/GetSubCategories/" + $(this).val(), function (data) {
if (data.length > 0) {
//problematic portion
$("#" + id).attr('classname', 'selected');
$("#" + id).attr('name', 'sel' + rowIndex);
$("#" + id).attr('id', 'sel' + rowIndex);
var position = ($('table').get(0));
var tr = position.insertRow(rowIndex + 1);
var td1 = tr.insertCell(-1);
var td2 = tr.insertCell(-1);
td1.appendChild(document.createTextNode('SubCategory'));
var sel = document.createElement("select");
sel.name = 'parent_id';
sel.id = 'parent_id';
sel.setAttribute('class', 'unselected');
td2.appendChild(sel);
$('#parent_id').append($("<option></option>").attr("value", "-1").text("-please select item-"));
$.each(data, function (GetSubCatergories, Category) {
$('#parent_id').append($("<option></option>").
attr("value", Category.category_id).
text(Category.name));
});
sel.name = 'cat.parent_id';
sel.id = 'cat.parent_id';
}
});
}
});
});
答案 0 :(得分:1)
您正在尝试设置您通过ID选择的内容的ID,这对于一个开始来说不是一件好事。
$("#" + id).attr('id', 'sel' + rowIndex); // Shouldn't do that I think
我想你要替换这一行
var id = $(this).attr('id');
带
var currentDropdown = this;
然后当你想在getJSON里面访问它时:
$(currentDropdown)
所以你的问题部分现在看起来像:
$(currentDropdown).attr('classname', 'selected');
$(currentDropdown).attr('name', 'sel' + rowIndex);
$(currentDropdown).attr('id', 'sel' + rowIndex);