您如何获得choose.js使用JavaScript生成的克隆内容?

时间:2019-03-23 17:49:42

标签: javascript clone jquery-chosen

我正在使用selected.js版本1.8.7 我可以使用clone(true)将div的内容与所有数据和事件克隆到另一个div。我更改了所有ID,以在克隆的项目上使用新的ID。 问题是当我选择一个javascript生成的选择列表时,它会激活原始的选择列表,而不是其本身。

我已经尝试使用clone()在没有所有数据和事件的情况下进行克隆。它会克隆,但根本不允许新生成的<select>下拉。 我删除了selected.js,然后clone(true)复制了所有内容,每个<select>列表都可以单独工作,但是没有过滤功能。

<form method="post" name="add_items">

<div class="clone-test" id="cloned">
<select id="items1" name="contract_item[]" class="form-control chosen-select" data-placeholder="Choose a item...">
<option value="0">Select a Item</option>
<option value="1">Car 1</option>
<option value="2">Car 2</option>
<option value="3">Car 3</option>
</select>
</div>

<div class="col-md-6" id="new_items"></div>


</form>

<input type="button" onclick="clone_div()" name="add" value="Add Another Item" class="btn btn-primary" id="add_select">


<script type="text/javascript">
var regex = /^(.+?)(\d+)$/i;
var cloneIndex = $("#cloned").length;

function clone_div(){
    $("#cloned").clone(true)
        .appendTo("#new_items")
        .attr("id", "cloned" +  cloneIndex)
        .find("*")
        .each(function() {
            var id = this.id || "";
            var match = id.match(regex) || [];
            if (match.length == 3) {
                this.id = match[1] + (cloneIndex);
            }
        })
cloneIndex++;

$("#new_items").html(html);
$(".chosen-select").chosen();
}

</script>

我希望每个<select>列表都可以独立工作,并且每个列表都具有使用selected.js进行过滤的功能。无论选择哪种JavaScript生成的<select>列表,我都可以激活原始选择列表。

0 个答案:

没有答案