解决: 行destination.block(...)是导致错误的行。我强迫空虚等于避免这种情况。我认为if(空)语句只是在显示繁忙消息的两种不同方式之间进行选择。
我是jQuery的新手,并接管了前同事维护ASP.NET MVC 2项目。我很难理解以下代码行正在做什么:
var empty = ($(":not(script)", destination).length == 0);
此行在IE中导致错误,但在Firefox中则不然。说实话,看看下面的功能,我觉得不需要,但我的同事不相信评论他的代码。我需要了解更改代码的影响。上面的上下文是以下Javascript函数:
PRISMbase.LoadPartialEx = function(url, data, destination, successCallback, loadingMessage, appendNotOverwrite) {
var empty = ($(":not(script)", destination).length == 0);
var message = loadingMessage == null ? "Please wait" : loadingMessage;
if (empty)
destination.html(busy);
else
destination.block({ message: '<h1 class="Progress">' + message + '</h1>' });
return $.ajax({
data: data,
dataType: "html", type: "GET", url: url,
success: function(viewHtml) {
var partial = $(viewHtml);
if (!empty)
destination.unblock();
if(viewHtml != "")
{
if (appendNotOverwrite)
destination.append(partial);
else
destination.html(partial);
PRISMbase.InitialiseFormElements(destination);
}
else
destination.empty();
if (successCallback != null) successCallback(destination, partial);
}
});
}
在上面:
destination =一个返回“#TabContent”的jQuery选择器(这是一个div)。
busy ='<img class="progress" src="/Content/OnyxProgressCircle.gif" />
';
任何帮助都将不胜感激。
感谢。
艾伦
答案 0 :(得分:0)
该行代码检索目标选择器内部存在的所有非脚本标记,然后测试找到的元素数是否为0.变量empty
最终应该是布尔值。如何在IE中读取错误?
也许值得指出的是,jQuery的空返回将评估为false,所以你可能会做这样的事情:
if ($(':not(script)', destination))
destination.block({ message: '<h1 class="Progress">' + message + '</h1>' });
else
destination.html(busy);
务必注意订单的逆转。在原文中,$(":not(script)", destination).length == 0
在没有元素时给出true
。在我的,我们没有单独存储布尔值,我们基于jQuery的初始返回操作,因此没有元素是false
结果。
答案 1 :(得分:0)
已解决:行destination.block(...)是导致错误的行。我强迫空虚等于避免这种情况。我认为if(空)语句只是在显示繁忙消息的两种不同方式之间进行选择。