首页>Program>source

我正在尝试在执行另一个jQuery后刷新选择。 我首先使用cURL创建选择选项,这会生成类似这样的代码。

$json_dropdown = '[{"id":"1475471145964056","name":"Option1"},
{"id":"935675176941821","name":"Option2"},
{"id":"555309881810660","name":"Option3"},
{"id":"304608093904515","name":"Option4"}]';

然后我有看起来像htis的HTML

<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();
    
    $.ajax({
        type:'POST',
        data:{ 'type': type, 'action': action, 'account': account, 'topic': topic  }, 
        url:'js/actions.php',
        success: function(data){
                $('#results_del').html(data);
                $('#delete_topic').prop("disabled", false);
                $('#delete_topic').html("Delete Topic");
                $('#delete_topic').addClass("btn-danger");
                $('#delete_topic').removeClass("btn-warning");
                
                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));
                });
            }
      });
    return false;
});

在此脚本中,我要实现的目标是在删除脚本成功后使用最初用于创建选项的相同脚本刷新选项。 看来我做错了,但我无法弄清楚是什么。

UPDATE

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

最新回答
  • 10天前
    1 #

    由于使用带有添加或删除值的Selectpicker线程,我得以实现功能

    通过成功添加这两行

    $('.selectpicker option:selected').remove();
    $('.selectpicker').selectpicker('refresh');
    

  • 10天前
    2 #

    还有另一件事.看来 $('.selectpicker').selectpicker('refresh'); 仅在此之前有任何其他操作时才会执行,例如 $('.selectpicker option:selected').remove();

  • javascript:jQuery代码中的问题在哪里? 它执行两次警报
  • c++:如何在C中使用int指向struct