更改克隆字段中的aria-control属性值

时间:2015-06-19 21:14:17

标签: javascript jquery html twitter-bootstrap

我已经改变了Milan Jaric从这个问题Jquery Clone Form Fields and increment ID给出的代码,但我遇到了一个我试图克隆Bootstrap崩溃的问题。我无法弄清楚如何改变属性' aria-control'值。

这是我目前所拥有的the demo。身份证和HREF本身工作正常,但是当我试图改变咏叹调控制的那一刻'值,引导程序折叠中的所有id和href都不会更改默认值。有什么想法吗?

JS脚本

var regex = /^(.*)(\d)+$/i;
var cloneIndex = $(".clonedBox").length;

function clone() {
    $(this).parents(".clonedBox").clone()
        .appendTo("div#accession_boxes")
        .attr("id", "clonedBox" + cloneIndex)
        .find("*")
        .each(function () {
            var id = this.id || "";
            var match = id.match(regex) || [];

            if (match.length == 3) {
                this.id = match[1] + (cloneIndex);
                this.href = match[1] + (cloneIndex);
                this.attr("a[aria-controls]") = match[1] + cloneIndex;
            }
        })
        .on('click', '#btnAddBox', clone)
        .on('click', '#btnDelBox', remove);
    cloneIndex++;
}
function remove() {
    $(this).parents(".clonedBox").remove();
}
$("#btnAddBox").on("click", clone);

$("#btnDelBox").on("click", remove);

是的,我知道我的删除按钮不起作用,但它现在不是优先事项。

修改

感谢 lmgonzalves ,JS脚本现在可以使用了。以下是更新的脚本。再次感谢您的帮助!

JS SCRIPT(更新)

    var regex = /^(.*)(\d)+$/i;
var cloneIndex = $(".clonedBox").length;

function clone() {
    $(this).parents(".clonedBox").clone()
        .appendTo("div#accession_boxes")
        .attr("id", "clonedBox" + cloneIndex)
        .find("*")
        .each(function () {
            var id = this.id || "";
            var href = this.href || "";
            var aria = $(this).attr("aria-controls") || "";

            var matchID = id.match(regex) || [];
            var matchHref = href.match(regex) || [];
            var matchAria = aria.match(regex) || [];

            if (matchID.length == 3) {
                this.id = matchID[1] + (cloneIndex);
                this.href = matchHref[1] + (cloneIndex);
                this.aria = matchAria[1] + (cloneIndex);
            }
        })
        .on('click', '#btnAddBox', clone)
        .on('click', '#btnDelBox', remove);
    cloneIndex++;
}
function remove() {
    $(this).parents(".clonedBox").remove();
}
$("#btnAddBox").on("click", clone);

$("#btnDelBox").on("click", remove);

1 个答案:

答案 0 :(得分:1)

要使用attr()设置属性,您需要以下语法:

$(element).attr("name", value);

所以在你的代码中使用:

$(this).attr("aria-controls", match[1] + cloneIndex);

相反:

this.attr("a[aria-controls]") = match[1] + cloneIndex;

请注意,您还需要使用$() this“换行”以将其转换为jQuery对象,并允许使用attr()和其他jQuery函数。

DEMO HERE