这是做什么的:($(“:not(script)”,destination)。length == 0)

时间:2010-08-04 15:05:37

标签: jquery

解决: 行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" />';

任何帮助都将不胜感激。

感谢。

艾伦

2 个答案:

答案 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(空)语句只是在显示繁忙消息的两种不同方式之间进行选择。