选择更新不起作用

时间:2014-01-02 09:09:37

标签: jquery jquery-chosen

我有一个选定的下拉列表。我更改了选项内容并调用了所选择的触发器:更新但选择了不重建下拉列表。这是我更新的

<select name="shortcode" style="width: 150px; display: none;" class="chosen_select chzn-done" id="select_shortcode">
   <option value=""></option> 
   <option value="7183">7183</option>
   <option value="7983">7983</option>
</select>

这是选择下拉列表(应该重建并删除最后两个<li>

<ul class="chzn-results">
   <li id="select_shortcode_chzn_o_1" class="active-result" style="">7183</li>
   <li id="select_shortcode_chzn_o_2" class="active-result" style="">7983</li>
   <li id="select_shortcode_chzn_o_3" class="active-result" style="">8208</li>
   <li id="select_shortcode_chzn_o_4" class="active-result" style="">8308</li>
</ul>

这是我的jQuery代码:

$('#select_shortcode_mask').change(function(){
    var shortcode_mask = $('#select_shortcode_mask').val();
    $('#select_shortcode').empty();
    var shortcode = {"7X83":["7183","7983"],"8x08":["8208","8308"]};
    $('#select_shortcode').append("<option value=''></option>");
    if(jQuery.isArray(shortcode[shortcode_mask])){
            $.each( shortcode[shortcode_mask], function( subkey, subvalue ) {
                $('#select_shortcode').append("<option value='"+subvalue+"'>"+subvalue+"</option>");
            })
    } else {
        var full_shortcode = ["7183","7983","8208","8308"];
        if(jQuery.isArray(full_shortcode)){
            $.each(full_shortcode, function( subkey, subvalue ) {
                $('#select_shortcode').append("<option value='"+subvalue+"'>"+subvalue+"</option>");
            })
        }
    }
    $("#select_shortcode").trigger("chosen:updated");
});

解决: 我使用旧版本,所以应该:

$("#select_shortcode").trigger("liszt:updated");

所以转储^^

6 个答案:

答案 0 :(得分:6)

我经常使用选择的插件,当然我不止一次遇到这个问题。

通常使用.trigger("chosen:updated")可以解决它。但就在一分钟前,这种方法不再起作用,我感到很困惑,因为我在2 js文件中使用相同的功能,让我们说a.js和{{1} },它适用于b.js,但不适用于a.js。我无法弄清楚为什么......我几乎失去理智!!!

所以,我再次检查api。我找到了b.js,启发了我!

我认为它是终极解决方案:销毁它并重建它。

.chosen("destroy")
我太吵了吗? :P

答案 1 :(得分:2)

您的更改函数调用元素“#select_shortcode_mask”的更改。 您的选择列表的ID为:“#select_shortcode”

答案 2 :(得分:1)

我的方式就是这个......

$timeout(function() {
  $('#CampSrchId').trigger('chosen:updated');
}, 1000);

OR

window.setInterval(function() {
  $('#CampSrchId').trigger('chosen:updated');
}, 1000);      

答案 3 :(得分:0)

代码:

$('#test')
  .val(1)
  .trigger('liszt:update')
  .removeClass('chzn-done');

$('#test_chzn').remove();


$("#test").chosen({
  width: "220px",
  no_results_text: "test"
});

答案 4 :(得分:0)

在我的情况下,这是因为双重包含了jQuery(一次在页眉中一次在页脚中)... 我删除了页脚中的一个,而.trigger('chosen:updated');就像一个吊饰!

答案 5 :(得分:-2)

$('.select-chosen').chosen({width: "100%"});