IE:jQuery.show()仅在show之前/之后使用alert()时显示元素

时间:2014-12-24 12:00:55

标签: javascript jquery html internet-explorer cross-browser

我试图添加一个简单的等待框'在javascript函数上,像这样:

function caricaElenco(indice) {
    (...)
    $("[id*=Wait1_WaitBox]").show(); // Visualizzo 'rotella' caricamento
    (...)
    $("[id*=Wait1_WaitBox]").hide();
}

它在Firefox上工作得很好,但在Internet Explorer 11上却没有显示出来。 HTML是:

<div id="ctl00_Wait1_WaitBox" class="updateProgress">
    Attendere...<br />
    <img src="../Images/wait.gif" align="middle" />
</div>

最奇怪的是我试试这个,进行简单的检查:

function caricaElenco(indice) {
    (...)
    alert($("[id*=Wait1_WaitBox]").css('display'))
    $("[id*=Wait1_WaitBox]").show(); // Visualizzo 'rotella' caricamento
    alert($("[id*=Wait1_WaitBox]").css('display'))
    (...)
    $("[id*=Wait1_WaitBox]").hide();
}

而且它正在工作,我的意思是它会显示警告,并且没有&#39;没有&#39;阻止&#39;阻止&#39; ...它也显示了这个盒子!但不是没有警报......为什么?

更新

尝试使用[id*="Wait1_WaitBox"],但它是一样的。 jQuery版本是1.8.2。

  

它只能使用警报

我的意思是,如果我这样做:

function caricaElenco(indice) {
    (...)
    alert('whatever');
    $("[id*=Wait1_WaitBox]").show(); // Visualizzo 'rotella' caricamento
    alert('whatever');
    (...)
    $("[id*=Wait1_WaitBox]").hide();
}

它显示了该框,但如果我这样做:

function caricaElenco(indice) {
    (...)
    $("[id*=Wait1_WaitBox]").show(); // Visualizzo 'rotella' caricamento
    (...)
    $("[id*=Wait1_WaitBox]").hide();
}

它没有工作(我的意思是没有显示等待框&#39;,而是执行函数必须执行的所有其他操作(...)正确加载网格视图在Internet Explorer 11上的AJAX调用,在Firefox中都有效。没有JavaScript错误。

更新2: 几乎整个javascript函数:

// Fill part of gridView
function loadList(index) {
    index = parseInt(index);
    buffer = 100; // Number of rows to load
    $("[id*=divGrid]").unbind('scroll');
    $('[id*="Wait1_WaitBox"]').show(); // Show loading 'wheel' 
    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "PageName.aspx/webMethodName",
        data: '{id:' + $("[id*=hdnID]").val() + ', index:' + index + '}',
        dataType: "json",
        async: false,
        success: function (response) {
        if (index == 0) {
            (...)
            $("[id*=grid] tr:last-child").remove();
            var row = "<tr class='" + response.d[index].State + "'>";
            row += "<td class="Column1"></td>";
            (...)
            row += "<td class="DateColumn"></td>";
            (...)
            row += "<td class='columnN'></td></tr>";

            $("[id*=grid]").append(row);
        }
        row = $("[id*=grid] tr:last-child").clone(true);
        $("[id*=grid] tr:last-child").remove();
        if (index <= response.d.length) {
            if (index + buffer > response.d.length)
                var stop = response.d.length;
            else
                var stop = index + buffer;
            (...)
            for (var i = index; i < stop; i++) {
                var j = 0;
                (...)  
                $("td", row).eq(j).html("<span id='lblCodeNumber" + i + "' >" + response.d[i].CodeNumber + "</span>"); j++;
                (...)
                var effectDate = new Date(parseInt(response.d[i].effectDate.substr(6)));
                $("td", row).eq(j).html(effectDate.getDate() + '/' + (effectDate.getMonth() + 1) + '/' + effectDate.getFullYear()); j++;
                }
                (...)
                var toBeCounted = "";
                var checked = "";
                if (response.d[i].ToBeCounted != null)
                    toBeCounted = response.d[i].ToBeCounted .toString();
                else
                    toBeCounted = "true"; 
                if (toBeCounted == "true")
                    checked = "checked = 'checked'";
                else
                    checked = ""; 
                var rdToBeCounted = "<span><input type='radio' class='radio' " + checked + " name='ToBeCounted" + i + "' value='s' id='sToBeCounted" + i + "' />";
                rdToBeCounted += "<label for='s" + i + "'>YES</label>";
                if (toBeCounted == "false")
                    checked = "checked = 'checked'";
                else
                    checked = "";
                toBeCounted += "<input type='radio' class='radio' " + checked + " name='ToBeCounted" + i + "' value='n' id='nToBeCounted" + i + "' />";
                rdToBeCounted += "<label for='n" + i + "'>NO</label></span>";
                $("td", row).eq(j).html(rdToBeCounted); 
                $("[id*=grid]").append(riga);
                (...)
                riga = $("[id*=grid] tr:last-child").clone(true);
            }
            if (stop < response.d.length) {
                $("[id*=divGrid]").scroll(function (e) {
                    if (element_in_scroll(".congruenti tbody tr:last")) {
                        loadList($(".congruenti tbody tr:last td:last").html());
                    };
                });
            }
            $('[id*="Wait1_WaitBox"]').hide();
        }
    },
    error: function (result) {
        alert("Error! " + result.status + " - " + result.statusText);
    }
});
}

1 个答案:

答案 0 :(得分:2)

最后你似乎又隐藏了它$("[id*=Wait1_WaitBox]").hide();

您需要显示这两行之间的内容。

它与alert一起使用,因为脚本的执行被冻结,直到您关闭警报(并且最后一行尚未执行)。