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

标签 javascript jquery html twitter-bootstrap

我已经更改了 Milan Jaric 在这个问题中给出的代码 Jquery Clone Form Fields and increment ID但我遇到了一个问题,我正在尝试克隆 Bootstrap 崩溃。我不知道如何更改属性“aria-control”值。

这是the demo我目前拥有的。 ID 和 HREF 本身工作得很好,但是当我尝试更改“aria-control”值时, Bootstrap 崩溃中的所有 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 脚本(已更新)

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

最佳答案

使用 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

关于javascript - 更改克隆字段中的 aria-control 属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30947373/

相关文章:

javascript - jQuery Click 事件未附加到 Knockout 模板

javascript - 使用 <a> 提交表单

javascript - 在解析之前延迟 ajax 请求

javascript - HTML Table,从行中检索数据并将其显示在其他地方

javascript - 如何将可拖动对象的移动限制在一个区域?

javascript - window.close如何以 Angular 关闭当前窗口

javascript - 使用 Angularjs 在 URL 中存储 View 状态

javascript - 使用 jquery 可调整大小的处理程序附加和调整 div 的大小

jquery - 如何进行 jquery 选项卡自定义

javascript - 如何使用 Javascript 随机更改背景颜色?