我一直在阅读有关此问题的几个问题,但我找不到解决问题的方法。对不起,如果我重复以前曾经问过的话。
在代码中:
$("#menuZone").load("northMenu.jsp", function(response, status, xhr) {
if (status == "error") {
var msg = "Error found: ";
alert(msg + xhr.status + " " + xhr.statusText);
}else{
// hide admin menus
$('.admin').hide();
}
});
我要做的是从'northMenu.jsp'加载无序列表,并隐藏具有类admin
的项目(li标签)。
在上面的代码中,class
的项目未被隐藏,但完整的html
已完全插入#menuZone
。
之后,调用其他地方的函数来显示和隐藏这些项目,工作正常。
在jquery load doc中说,“如果提供完整的回调,则会在后处理和执行HTML插入后执行。
所以,问题不应该是异步问题!或者可以吗?
答案 0 :(得分:2)
由于this fiddle适用于您,因此浏览器似乎不存在问题。假设您的代码中没有任何内容篡改load()
(合理的假设恕我直言),这只留下两种可能的解释:
$(".admin")
没有任何匹配,因为来自AJAX请求的标记不包含class
属性,并且这些属性是通过代码在某处添加的。
这些元素实际上是隐藏的,但后来又被代码的另一部分再次显示(您提到了在您的问题评论中执行的其他AJAX请求)。
因此,我建议您通过添加complete
来电来检测alert()
回调:
// Hide admin menus.
$(".admin").hide();
alert($(".admin").length);
有三种可能的结果:
0
,表示(1)为真。0
,在这种情况下:
.admin
元素是否可见,