0
Im构建自定义的Minecraft服务器状态并出现问题。第一个版本是成功的,但代码相当长,我决定做得更好,更短。脚本应该填充每个.server的元素,但它不起作用。
<div class="server_status">
<div class="container servers_info">
<h1>My Network</h1>
<div id="of the server" class="server" title="of the server" server-ip="0.0.0.0">
<div class="name"></div>
<div class="count"><i class="fa fa-spinner fa-spin"></i></div>
<div class="players">Loading player data <i class="fa fa-spinner fa-spin"></i></div>
<div class="status"></div>
</div>
<div id="of the server" class="server" title="of the server" server-ip="0.0.0.0">
<div class="name"></div>
<div class="count"><i class="fa fa-spinner fa-spin"></i></div>
<div class="players">Loading player data <i class="fa fa-spinner fa-spin"></i></div>
<div class="status"></div>
</div>
<!-- ..... more servers -->
<span class="total"><i class="fa fa-spinner fa-spin"></i></span>
</div>
$(document).ready(function ping() {
$(".servers_info .server").each(function() {
var name = $(this).attr("title");
var ip = $(this).attr("server-ip");
var id = $(this).attr("id");
var total = 0;
var call = "Get Avatar List adress";
//Set the name:
$(".name",this).html(name);
//Gets the data:
$.getJSON("http://mcapi.ca/v2/query/info/?ip=" + ip, function (json) {
//Checks The status and applies visual effects:
if (json.status !== "false") {
$(".status",this).html("<span class=\"l-online\">" + json.ping + " ms</span>");
$(this).removeClass('blur');
} else {
$(".status",this).html("<span class=\"l-offline\">0 ms</span>");
$(this).addClass('blur');
};
});
});
//Sets Refresh rate of 10s
setTimeout(ping, 10000);
});
我缩小了问题的$.getJSON
部分。数据被正确检索但不能放在其各自的DIV中。与第一版脚本的唯一区别在于,我为每个想要显示的服务器分别使用了4个getJSON
。现在使用.each
为它们中的所有4个和$(this)使用相对对象进行组合。
我怀疑问题是在.get中使用$(this),但我并不确定,也不知道如何解决它。
谢谢你的回复。我在几分钟前通过用$(this)创建另一个变量来解决这个问题。 –
也可以。很高兴你想出来了。 – nbermudezs