Jquery改名称属性

前端之家收集整理的这篇文章主要介绍了Jquery改名称属性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个JQuery函数尝试更改元素的id,name和class。 id和class的改变似乎是有效的,但是由于某些好奇的原因,尝试改变元素的名称永远不会起作用。
$(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) {

                $("#" + id).attr('classname','selected');
                $("#" + id).attr('id','sel' + rowIndex);
                $("#" + id).attr('name','sel' + rowIndex); // this never works

                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);

                $.each(data,function (GetSubCatergories,Category) {
                    $('#parent_id').append($("<option></option>").
       attr("value",Category.category_id).
       text(Category.name));
                });
            }

        });

    }
});
});

解决方法

名称无法更改,因为一旦修改了id,后续表达式中的选择器(使用未修改的id)就是没有选择:)
$("#" + id).attr('id','sel' + rowIndex);
$("#" + id).attr('name','sel' + rowIndex); // this can't ever work

尝试将它们链接在一起,以保持当前选择的参考:

$("#" + id).attr('id','sel' + rowIndex)
           .attr('name','sel' + rowIndex);

或者,重新排序语句,以便在更改id之前更改名称(和/或其他方式):

$("#" + id).attr('name','sel' + rowIndex);
$("#" + id).attr('id','sel' + rowIndex);

您还可以将选择分配给变量:

var $el = $("#" + id);
$el.attr("id",'sel' + rowIndex);
...
原文链接:https://www.f2er.com/jquery/182665.html

猜你在找的jQuery相关文章