jQuery 成功后刷新 selectpicker 选项不起作用

我试图在执行另一个 jQuery 后刷新选择。我首先使用 cURL 创建选择选项,它会生成如下代码。


$json_dropdown = '[{"id":"1475471145964056","name":"Option1"},

{"id":"935675176941821","name":"Option2"},

{"id":"555309881810660","name":"Option3"},

{"id":"304608093904515","name":"Option4"}]';

然后我的 HTML 看起来像 htis


<h2>Delete topic</h2>

<div class="form-group">

<select class="form-control selectpicker show-tick" name="topic" id="topic_del" data-show-subtext="true" data-live-search="true"  showIcon="true" data-style="btn-default" data-size="8" data-width="100%" title="Choose a TOPIC to DELETE..." required></select>

</div>

    <div class="form-group">

    <button type="button" class="btn btn-danger" id="delete_topic">Delete Topic</button></span>

</div>

<div id="results_del"></div>

我正在使用此 jquery 将选项加载到选择中


$('#topic_del').click(function(){

    var a = {Topic:<?echo $json_dropdown; ?>}

    $.each(a.Topic, function topics (key, value) {

        $("#topic_del").append($('<option></option>').attr('data-tokens',value.id).val(value.id).html(value.name));

        //$("#topic").attr('data-tokens',value.id);

    });

});

效果很好。然后我有另一个脚本来使用 ajax 从选择中删除选项


// Delete Topic

$('#delete_topic').click(function(){

    // bind 'myForm' and provide a simple callback function 

  

    $(this).prop("disabled", true);

      // add spinner to button

    $(this).html(

        `<i class="fa fa-spinner fa-spin"></i> Deleting Topic`

      );

    $(this).removeClass("btn-danger");

    $(this).addClass("btn-warning");

    

    var type = $("#type").val();

    var action = $("#action_del").val();

    var account = $("#account").val();

    var topic = $("#topic_del").val();


                });

            }

      });

    return false;


});

在此脚本中,我想要实现的是在删除脚本成功后刷新选项,使用与最初创建选项相同的脚本。看来我做错了什么,但我不知道是什么。


更新


刚刚意识到,如果我删除selectpicker并尝试删除我刚刚从选择中成功删除的选项,就像这样,$("#topic_del option[value='" +topic+ "']").remove();它将起作用。但是,如果我放回它,selectpicker它不会删除该选项。难道是 selectpicker 不允许这样做吗?


回首忆惘然
浏览 279回答 2
2回答

喵喔喔

由于此线程Selectpicker 具有添加或删除值,我能够实现该功能通过在成功中添加这两行$('.selectpicker option:selected').remove(); $('.selectpicker').selectpicker('refresh');

偶然的你

还有一件事。$('.selectpicker').selectpicker('refresh');例如,似乎只有在此之前有任何其他操作时才会执行$('.selectpicker option:selected').remove();
打开App,查看更多内容
随时随地看视频慕课网APP