js html()覆盖请教一个层级关系

发布于 2022-09-07 22:22:06 字数 3042 浏览 10 评论 0

html代码
<div class="row">
        <div class="col-sm-6">
            <select class="form-control m-b" name="server_lists" id="server_lists">
            <option>选择服务器</option>
                {% for server_i in server_lists %}
                <option value="{{ server_i.id }}">{{ server_i.public_ip }}</option>
                {% endfor %}
            </select>
        </div>
    <div class="col-sm-6 pull-right">
        <select class="form-control m-b" name="server_lists" id="server_lists">
        <option>选择服务器</option>
            {% for server_i in server_lists %}
            <option value="{{ server_i.id }}">{{ server_i.public_ip }}</option>
            {% endfor %}
        </select>
    </div>
    </div>

<div class="row">
    <div class="col-sm-6">

    <button type="button" class="btn btn-default" id='select-all'>全选</button>
    <button type="button" class="btn btn-default" id='deselect-all'>全不选</button>

        <select id='pre-selected-options' multiple='multiple' name="game_id">

        </select>
    </div>
</div>

<br>

<div class="row">
    <div class="col-sm-4">
        <button class="btn btn-primary"   type="button" onclick="mtSelect(this)">
            开始迁移
        </button>

    </div>
js代码
<script type="text/javascript">
$(document).ready(function () {
    $('#pre-selected-options').multiSelect();
        $('#select-all').click(function(){
            $('#pre-selected-options').multiSelect('select_all');
                return false;
        });
        $('#deselect-all').click(function(){
          $('#pre-selected-options').multiSelect('deselect_all');
          return false;
        });

    $("#server_lists").change(function () {
        var server_i = $("#server_lists").val();
        $.ajax({
            data: {'obj_id': server_i, csrfmiddlewaretoken: '{{ csrf_token }}'},
            type: 'POST',
            url: '/pro1/gamemigratedata/' + server_i + '/',
            success: function (data) {
                var content = '';
                $.each(data, function (i, item) {
                    content += '<option value='+'"'+item.gameid+'"'+'>'+item.gameid+'</option>'

                });
                alert(content);
                $("#pre-selected-options").html(content)
            }
            
        })
    });

});

</script>

问题如下:

clipboard.png

应该是js的一个层级关系覆盖了
alert(content);是有内容的
$("#pre-selected-options").html(content)内容为空的

后来测试把

$('#pre-selected-options').multiSelect();

注释了就正常,但那个多选框功能不全

clipboard.png

那现在这个情况要怎么改的?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

偏爱你一生 2022-09-14 22:22:06

不知道这个multiSelect是什么组件,jqueryui?没找到,不过很多组件都是自行用div和span构建的,不一定用原生的标签.即使是用,也是在初始化的之前就需要把基本信息写进去,后期动态修改就得看组件是否给接口了.你这个应该不是html的范围问题,是初始化时机问题.
看一看这个组件是否提供了相应的方法动态修改选项,或者在用html()之前销毁之前的组件,加入option之后重新初始化一个.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文