选择 JavaScript 无法 click/select 动态更新
Chosen JavaScript can't click/select on update dynamically
我有一个网站,我需要根据媒体系列过滤媒体类型列表。即:如果选择 print
,它必须只显示与印刷有关的选项,如果选择 digital
,它必须只显示与数字内容有关的选项。
我可以用新值更新列表,但是它们不再可点击了?
截图如下:
我已经在使用:$("#mec_id").trigger("liszt:updated");
其中 mec_id
是 select 的 ID。这是选择 media family
后的 HTML,当尝试单击 media type
时,它不会给 click/select 选项。在代码中我 selected print
因为那里的下拉菜单只有一个值(为了在代码中保存 space)。
HTML:
<select id="mec_id" class=" chosen-select" tabindex="-1" multiple="" style="width: 100%; display: none;" data-placeholder="Select Media Type" name="mec_id[]">
<option data-val="12" value="print">print</option>
</select>
<div id="mec_id_chosen" class="chosen-container chosen-container-multi" style="width: 349px;" title="">
<ul class="chosen-choices">
<li class="search-field">
<input class="default" type="text" style="width: 132px;" autocomplete="off" value="Select Media Type" tabindex="8">
</li>
</ul>
<div class="chosen-drop">
<ul class="chosen-results">
<li class="active-result" data-option-array-index="12">print</li>
</ul>
</div>
</div>
JavaScript/JQuery(AJAX成功调用的函数):
success: function (data) {
var ul = document.createElement('ul');
ul.className = "chosen-results";
for (var i = 0; i < data.length; i++) {
if (i == 0) {
$('#media_types .chosen-drop').contents().remove();
$('#mec_id').contents().remove();
}
var text = data[i].text;
var li = document.createElement('li');
li.className = "active-result";
li.setAttribute('data-option-array-index', data[i].id);
li.innerHTML = text;
ul.appendChild(li);
// create options
var option = document.createElement('option');
option.setAttribute('data-val', data[i].id);
option.value = data[i].text;
option.text = data[i].text;
document.getElementById("mec_id").appendChild(option);
}
$('#mec_id_chosen .chosen-drop').append(ul);
$("#mec_id").trigger("liszt:updated");
},
你确定它不应该是 chosen:updated
而不是 liszt:updated
我没有看到任何对李斯特的引用 - http://harvesthq.github.io/chosen/
我有一个网站,我需要根据媒体系列过滤媒体类型列表。即:如果选择 print
,它必须只显示与印刷有关的选项,如果选择 digital
,它必须只显示与数字内容有关的选项。
我可以用新值更新列表,但是它们不再可点击了?
截图如下:
我已经在使用:$("#mec_id").trigger("liszt:updated");
其中 mec_id
是 select 的 ID。这是选择 media family
后的 HTML,当尝试单击 media type
时,它不会给 click/select 选项。在代码中我 selected print
因为那里的下拉菜单只有一个值(为了在代码中保存 space)。
HTML:
<select id="mec_id" class=" chosen-select" tabindex="-1" multiple="" style="width: 100%; display: none;" data-placeholder="Select Media Type" name="mec_id[]">
<option data-val="12" value="print">print</option>
</select>
<div id="mec_id_chosen" class="chosen-container chosen-container-multi" style="width: 349px;" title="">
<ul class="chosen-choices">
<li class="search-field">
<input class="default" type="text" style="width: 132px;" autocomplete="off" value="Select Media Type" tabindex="8">
</li>
</ul>
<div class="chosen-drop">
<ul class="chosen-results">
<li class="active-result" data-option-array-index="12">print</li>
</ul>
</div>
</div>
JavaScript/JQuery(AJAX成功调用的函数):
success: function (data) {
var ul = document.createElement('ul');
ul.className = "chosen-results";
for (var i = 0; i < data.length; i++) {
if (i == 0) {
$('#media_types .chosen-drop').contents().remove();
$('#mec_id').contents().remove();
}
var text = data[i].text;
var li = document.createElement('li');
li.className = "active-result";
li.setAttribute('data-option-array-index', data[i].id);
li.innerHTML = text;
ul.appendChild(li);
// create options
var option = document.createElement('option');
option.setAttribute('data-val', data[i].id);
option.value = data[i].text;
option.text = data[i].text;
document.getElementById("mec_id").appendChild(option);
}
$('#mec_id_chosen .chosen-drop').append(ul);
$("#mec_id").trigger("liszt:updated");
},
你确定它不应该是 chosen:updated
而不是 liszt:updated
我没有看到任何对李斯特的引用 - http://harvesthq.github.io/chosen/