jquery 选择更新不工作

lg40wkob  于 2023-10-17  发布在  jQuery
关注(0)|答案(9)|浏览(138)

我有一个选择。我改变了选项内容,并调用触发器选择:更新,但选择不重建触发器。这是我的更新

<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");

所以转储^^

pepwfjgg

pepwfjgg1#

我经常使用选择的插件,当然我遇到这个问题不止一次。
一般用.trigger("chosen:updated")就可以解决。但是就在一分钟前,这个方法不再起作用了,我感到很困惑,因为我在2个js文件中使用了相同的函数,比如a.jsb.js,它在a.js中工作,但在b.js中不工作。我不知道为什么...我差点失去理智!!!
所以,我再次检查了API。我发现了.chosen("destroy"),启发了我!
我认为这是终极解决方案:摧毁它,重建它。

$('.chosen').chosen("destroy").chosen();

我是不是太大声了?:p

6jygbczu

6jygbczu2#

您的change函数调用元素“#select_shortcode_mask”的change。您的选择列表具有id:“#select_shortcode”

avkwfej4

avkwfej43#

代码:

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

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

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

1rhkuytd4#

我的路是这样的……

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

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

yk9xbfzb5#

我知道这是一个老问题,但没有一个确切的解决方案为我工作,所以我结合@李开复和@杰米代码的工作!

$('#your-select-dropdown-id').chosen("destroy").chosen(); 
$('#your-select-dropdown-id').chosen({ width: "100%" });

非常感谢你们两个,也不要忘记触发('改变');在页面加载/文档准备,以及如果您的浏览器是依赖于另一个浏览器。

piv4azn7

piv4azn76#

我以前

$("select").chosen({ width: "100%" });//chosen hack

与使用.trigger("chosen:updated");时一样,这似乎无法解决问题。它看起来很粗糙,但工作得很好。

qzlgjiam

qzlgjiam7#

在我的例子中,这是因为jQuery的双重包含(一次在头部,一次在页脚)。我删除了页脚中的一个,.trigger('chosen:updated');就像一个魅力!

h4cxqtbf

h4cxqtbf8#

它对我也不起作用。然后,我决定将初始化的控制分配给一个变量,并使用该变量重写顺序调用。这解决了问题。

<script type="text/javascript">
    var bs = $('#BookSets').chosen();

    function b1onclick() {
        bs.trigger("chosen:updated");
    }
   ....
brtdzjyr

brtdzjyr9#

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

相关问题