我在按钮点击时附加一个包含多个选择下拉列表的html到另一个div的html;但在追加div后,多个选择下拉列表无法正常工作。这是我的代码Example
请帮我解决这个问题。感谢
答案 0 :(得分:1)
在调用multiselect之前保存html,在追加多重选择时重建它
var html = $('#multiselect').html();
$('.multiselect-ui').multiselect({
includeSelectAllOption: true
});
$('#append-btn').click(function(){
$(html).appendTo('.div2');
$('.multiselect-ui').multiselect('rebuild')
})
答案 1 :(得分:1)
您可以使用解决方案https://fiddle.jshell.net/0tpLod7h/1/
var cnt = 2;
var html = $('#multiselect').html();
$('.multiselect-ui').multiselect({
includeSelectAllOption: true
});
$('#append-btn').click(function(){
cnt++;
$(html).appendTo('.div2');
$('.div2 > div').last().find('select').attr('id', 'dates-field' + cnt);
$('#dates-field' + cnt).multiselect('rebuild');
})
span.multiselect-native-select {
position: relative
}
span.multiselect-native-select select {
border: 0!important;
clip: rect(0 0 0 0)!important;
height: 1px!important;
margin: -1px -1px -1px -3px!important;
overflow: hidden!important;
padding: 0!important;
position: absolute!important;
width: 1px!important;
left: 50%;
top: 30px
}
.multiselect-container {
position: absolute;
list-style-type: none;
margin: 0;
padding: 0
}
.multiselect-container .input-group {
margin: 5px
}
.multiselect-container>li {
padding: 0
}
.multiselect-container>li>a.multiselect-all label {
font-weight: 700
}
.multiselect-container>li.multiselect-group label {
margin: 0;
padding: 3px 20px 3px 20px;
height: 100%;
font-weight: 700
}
.multiselect-container>li.multiselect-group-clickable label {
cursor: pointer
}
.multiselect-container>li>a {
padding: 0
}
.multiselect-container>li>a>label {
margin: 0;
height: 100%;
cursor: pointer;
font-weight: 400;
padding: 3px 0 3px 30px
}
.multiselect-container>li>a>label.radio, .multiselect-container>li>a>label.checkbox {
margin: 0
}
.multiselect-container>li>a>label>input[type=checkbox] {
margin-bottom: 5px
}
.btn-group>.btn-group:nth-child(2)>.multiselect.btn {
border-top-left-radius: 4px;
border-bottom-left-radius: 4px
}
.form-inline .multiselect-container label.checkbox, .form-inline .multiselect-container label.radio {
padding: 3px 20px 3px 40px
}
.form-inline .multiselect-container li a label.checkbox input[type=checkbox], .form-inline .multiselect-container li a label.radio input[type=radio] {
margin-left: -20px;
margin-right: 0
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<div class="form-group" id="multiselect">
<label class="col-md-4 control-label" for="rolename">Role Name</label>
<div class="col-md-4">
<select id="dates-field2" class="multiselect-ui form-control" multiple="multiple">
<option value="cheese">Cheese</option>
<option value="tomatoes">Tomatoes</option>
<option value="mozarella">Mozzarella</option>
<option value="mushrooms">Mushrooms</option>
<option value="pepperoni">Pepperoni</option>
<option value="onions">Onions</option>
</select>
</div>
</div>
<div class="div2">
</div>
<button id="append-btn">Append
</button>
答案 2 :(得分:1)
答案 3 :(得分:1)
这里有一个解决方案 在你自己的小提琴中 。
问题很简单 - 问题是,当我们添加代码时,我们必须 destroy
在其中使用plugin
{}再次re-init
强>
因为仅附加复制HTML代码并重新加载,当插件被调入页面时,它将永远不会出现在圆顶中,因此插件将无法使用附加元素。为此我们必须回忆插件。
希望它对你的欢呼有帮助。
以下是回答 jsfiddle
的链接答案 4 :(得分:1)
请找到下面提到的解决方案。
在html中,您需要创建如下所述的模板。
<div id="template" class="hidden">
<div class="form-group" id="multiselect">
<label class="col-md-4 control-label" for="rolename">Role Name</label>
<div class="col-md-4">
<select id="dates-field2" class="multiselect-ui form-control" multiple="multiple">
<option value="cheese">Cheese</option>
<option value="tomatoes">Tomatoes</option>
<option value="mozarella">Mozzarella</option>
<option value="mushrooms">Mushrooms</option>
<option value="pepperoni">Pepperoni</option>
<option value="onions">Onions</option>
</select>
</div>
</div>
</div>
这是你的jQuery代码。
var html = $('#template').html();
$('.multiselect-ui').multiselect({
includeSelectAllOption: true
});
$('#append-btn').click(function() {
$(html).appendTo('.div2');
$('.multiselect-ui').multiselect({
includeSelectAllOption: true
});
});
你可以在这里找到工作小提琴:https://fiddle.jshell.net/wuyy56gs/1/
如果不起作用,请告诉我。