Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 回调中的DOM操作_Javascript_Jquery_Socket.io - Fatal编程技术网

Javascript 回调中的DOM操作

Javascript 回调中的DOM操作,javascript,jquery,socket.io,Javascript,Jquery,Socket.io,我正在构建一个连接到socket.io服务器的客户端。我有以下代码: $(document).ready(function () { Desktops.onData(function (desktops) { var desktopsList = $("#desktops"); $.each(desktops, function (id, desktop) { console.log(desktop.name);

我正在构建一个连接到
socket.io
服务器的客户端。我有以下代码:

$(document).ready(function () {
    Desktops.onData(function (desktops) {
        var desktopsList = $("#desktops");
        $.each(desktops, function (id, desktop) {
            console.log(desktop.name);
            desktopsList.append('<option value="' + id + '">' + desktop.name + '</option>');
        });
    });

    Sockets.connect();
});
我知道问题不在数据中,因为
console.log
起作用。我还知道问题不在于我的HTML或jQuery代码,因为当我尝试在回调之外附加到
select
时,它会起作用。因此,它一定是关于在回调中执行jQuery的。我该怎么做才能使jQuery工作


谢谢。

鉴于您声明正在使用的插件(),您需要调用其上的
刷新
方法,以识别新的
选项
元素已添加到基础
选择
。试试这个:

Desktops.onData(函数(桌面){
var desktopsList=$(“#桌面”);
$。每个(桌面,功能(id,桌面){
console.log(desktop.name);
desktoplist.append(“”+desktop.name+“”);
});
desktopsList.selectpicker('refresh');//在此处更新引导选择
});

您可以通过检查工具查看附加的元素吗?你能提供一个例子吗?因为我不明白为什么它可能不起作用(你在页面上只有一个
#desktops
元素,对吗?)我刚刚检查过,我可以通过检查工具看到附加的元素,但它们没有呈现在我的屏幕上。为什么?如果使用一些插件进行下拉,可能不是更新html?@Justinas我使用引导插件使选择看起来更“漂亮”,你认为问题可能就在那里?有没有办法让我手动更新html?请检查控制台
<select id="desktops" class="selectpicker" data-live-search="true">
</select>