【发布时间】:2016-11-14 15:12:42
【问题描述】:
我有以下 HTML:
<input type="text" id="condition_value_1" style="display: none" />
<button id="showme">Make Select2</button>
<button id="clickme">Make Input</button>
然后看看下面的jQuery:
$(function() {
var cond1 = $('#condition_value_1');
var cloned_cond1 = cond1.clone();
var cond1_select = '<select name="condition_value_1" id="condition_value_1" multiple="multiple"><option></option><option value="1">Opt1</option><option value="2">Opt2</option></select>';
$('#showme').click(function() {
cond1.removeAttr('style').replaceWith(cond1_select).select2({
placeholder: 'Select choice'
});
});
$('#clickme').click(function() {
if ($('#condition_value_1').hasClass('select2-hidden-accessible')) {
$("#condition_value_1").select2('destroy');
}
$('#condition_value_1').replaceWith(cloned_cond1).removeAttr('style');
});
});
你可以试试上面的代码HERE。
现在,一旦您单击#showme,您应该删除 attr 样式,将原始元素替换为给定的元素并将其转换为 Select2,最后一部分不起作用。
另一方面,如果你点击#clickme,你应该销毁之前的 Select2,用克隆的元素替换 #condition_value_1 并删除 attr 样式,因为克隆的元素具有该属性,但这也不起作用。
这个想法是在元素之间切换并按需打开/关闭属性。
也许我在这里遗漏了一些东西,但我不确定是什么。有什么可以帮助我的吗?
【问题讨论】:
-
删除属性不会更新属性.....而是使用
show()方法, -
cond1.replaceWith(cloned_cond1); cond1.removeAttr('style');倒退了,不是吗?cloned_cond1.removeAttr('style'); cond1.replaceWith(cloned_cond1); -
@PranavCBalan 也不起作用
-
@MisterPositive 正在向您显示克隆的元素?因为不适合我
-
你到底想做什么?这看起来很复杂,我猜可能会更容易。
标签: javascript jquery html dom