为什么这个jQuery脚本在IE9与IE9兼容性(和其他浏览器)中的行为有所不同?

时间:2012-06-13 06:38:43

标签: jquery web internet-explorer-9 cross-browser

设置:我有一个小的jQuery / Web服务启用的html页面提供2个视图 - 让我们称之为 ViewMySubmissions ViewMyPendingApprovals ,其中'ViewMySubmissions'是默认值查看负载。切换视图分别由附加到每个视图的2个按钮的.click()事件控制。

我遇到的问题是,在使用其他浏览器和IE9的兼容模式进行测试后,jQuery按预期工作 - 单击按钮后,将显示相应的数据表。但是,在IE 9中,单击 ViewMyPendingApprovals 按钮后,它会立即切换回默认视图。

我似乎无法弄清楚它有什么问题。

jQuery脚本的代码片段如下:

$(document).ready(function () {
   $('#resultsArea').hide();
   $('#detailsDiv').hide();
   $('#approvalsDiv').hide();

   // default view.
   displaySubmissions($('span[id$=endUser]').text());

   $('button[id$=submissionItems]').click(function () {
      $('#detailsDiv').hide();
      $('#approvalsDiv').hide();
      $('#signOffArea').hide();
      $('span[id$=myActionPane]').html('My Request History');
      displaySubmissions($('span[id$=endUser]').text());
    });

   $('button[id$=approvalItems]').click(function () {
      $('#detailsDiv').hide();
      $('#approvalsDiv').hide();
      $('#signOffArea').show();
      $('span[id$=myActionPane]').html('My Action Items');
      displayActionItems($('span[id$=endUser]').text());
   });

   submitForAction("signOffApproval", $('span[id$=endUser]').text(), true);
   submitForAction("signOffDeny", $('span[id$=endUser]').text(), false);
});


 //provides a display table of action items
function displayActionItems(approver) {
    $.ajax({
      type: "POST",
      url: "enduserWS.asmx/ViewActionItems",
      data: "{'user': '" + userCredential + "'}",
      contentType: "application/json;charset=UTF-8",
      dataType: "json",
      success: function (msg) {
        $('table[id$=summaryTable]').find('tr:gt(0)').remove();
        var jsonVal = $.parseJSON(msg.d);
        if (jsonVal.length < 1) {
            var columnCount = $('tr[id$=summaryHeader]').children().length;
            $('table[id$=summaryTable] tr:last').after('<tr><td colspan="' + columnCount + '">No items to approve and process. </td>');
            $('#signOffArea').hide();
            return;
        }

        for (var itemRecord in jsonVal) {
            $('table[id$=summaryTable] tr:last').after('<tr><td id="requestId"">' + jsonVal[itemRecord]["ID"] + '</td><td>' + jsonVal[itemRecord]["Requestor"] + '</td><td>' + jsonVal[itemRecord]["RequestDate"] + '</td><td>' + jsonVal[itemRecord]["Status"] + '</td></tr>');
        }
      },
      error: function (msg) {
        $('#resultsArea').html(defaultErrorMessage);
      }
   });

}

displayActionItems() displaySubmissions()是在成功调用Web服务方法后,在表中显示类似数据的jQuery方法。

我的猜测是因为我将displaySubmissions()称为默认视图,即使部分加载HTML页面的部分,IE9也会再次调用它。

有什么想法? *注意,使用jQuery的经验有限,而且还不熟悉绑定事件。

0 个答案:

没有答案