通过动态添加id后添加选择

时间:2015-09-16 07:18:59

标签: javascript jquery jquery-chosen

我正在显示选择插件的选项,后者添加选项。

我正在尝试下面

<select id='one'>
    <option>a</option>
    <option>b</option>
</select>

并调用所选插件

$('#one').chosen();

它工作正常我现在删除所选部分并添加新选项以选择框

$('#one').append(' <option>g</option>');
$('#one').addClass('abc').attr('id', '');
$('#one_chosen').remove();
$('.abc').attr('id', 'myid');
$('#myid').chosen();

你可以看到我已经按类添加了id并且在它上面调用了selected(),但这次它不起作用。如果没有选择

,我无法在选择框中保留id

jsfiddle

2 个答案:

答案 0 :(得分:1)

您必须克隆该元素才能使其正常工作:

$('#one').chosen();

$('#one').find('option:first').remove();

$myid = $('#one').clone().attr('id', 'myid').insertBefore('#one');

$("#one, #one_chosen").remove();

$myid.show().chosen();

Updated demo

答案 1 :(得分:0)

我不确定我理解你的问题。但您可以使用chosen刷新.trigger("chosen:updated");,即可以执行类似

的操作
 $('.select-chosen').chosen();
 $('#one').addClass('abc').attr('id', '');

 $('.abc').attr('id', 'myid');

 $('.select-chosen').trigger("chosen:updated");

更新

理想情况下,如果您想完全更改select chosen,最好隐藏并显示新的select chosen。如果您想要选择addremove选项并希望获得所选的全部功能,则可以使用

轻松完成
// add custom option
$(".select-chosen").append('<option>Custom Option</option>');

// remove existing option
$(".select-chosen option[value='a']").remove();

参考:http://jsfiddle.net/qubkhtsc/5/