jquery重装表(IE 7)

时间:2017-03-24 08:55:12

标签: javascript jquery css ajax asp-classic

我这里有这样的HTML代码:

<div id="overview" class="fadeable">
    <table id="exportTable">
        <tr>
            <td style="width: 500px;"><strong>Col 1</strong></td>
            <td style="width: 15px;" class="aligned_td"><strong>Col 2</strong></td>
        </tr>
    <% call getLocationPercentages(is_nll) %>
    </table>
</div>

如您所见,我在第一个asp之后调用tr - 函数。它生成的输出是正确的(重新加载网站后。但是,我不想重新加载它。

对于这种情况,我制作了一个小型的JS功能,它可以在Chrome中运行,但不能在IE(7)中运行。 快速说明:我不能支持IE 7。

$(document).on("click", "#updateLocation", function() {
    $.ajax({
        url: "my-file.asp",
        type: "GET",
        scriptCharset: "utf-8",
        cache: false,
        contentType: "application/x-www-form-urlencoded; charset=UTF-8",
        data: data
    });

    $('#exportTable').load(location.href + " #exportTable");

}

我阅读了load的文档,正如我所说,它适用于chrome。然而,IE只是&#34;隐藏&#34;输出。提交后(或按下此按钮(在另一个div中,如果这很重要))表就会消失,但是dom是正确的。 没有CSS规则或什么可以隐藏该表。它会影响其他浏览器。

  

提交后的DOM也具有正确的值(因此它是#34;重新加载&#34;,但不显示)

想法?熟悉那个问题?

更新

我发现,表格没有正确生成。我的HTML结果如下:

<table id="exportTable">
    <table id="exportTable">
        correct content here
    </table>
</table>

当我将内表移动到另一个上面时,它再次独立,显示是正确的。出于某种原因,它不是重新生成内容,而是添加另一个表。

我试着打开&#34;打开&#34;第二次出现,但没有做到这一点:

var e = $('#exportTable:last');
e.prev().insertAfter(e);

内部表格未被选中,它仅影响外部表格

e.unwrap()

没有做到

我甚至无法在循环中使用each与其联系。它只是被遗忘。

2 个答案:

答案 0 :(得分:1)

我不知道为什么,但是&#34;重装&#34; a table最终会有2个表具有相同的类+ id&#39; s,其中第1个表只是第2个表的包装器。

我在表格周围包裹了一个<div>,更改了我的JS以重新加载该div,现在它正在运行。

<强> HTML

<div id="tableWrap">
    <table id="exportTable" class="exportTable">
        <tr>
            <td style="width: 500px;"><strong>col 1</strong></td>
            <td style="width: 15px;" class="aligned_td"><strong>col 2</strong></td>                                                                                  
       </tr>                                                                                 
       <% call getLocationPercentages(is_nll) %>
    </table>
</div>

<强> JS

$('#tableWrap').load(location.href + " #exportTable");

答案 1 :(得分:1)

我不确定你这样做的方式是否正确或你真正希望实现的目标。

首先 - 当您创建HTML表格时,您应该创建它:

<table>
   <thead>
        <tr>
            <!-- columns descriptions here -->
        </tr>
   </thead>
   <tbody id="ContentId">

   </tbody>
</table>

仅更新 tbody 元素。

其次,在第一次启动应用程序时,您应该使用ASP.NET呈现数据,但是(如果您想将AJAX与jQuery一起使用),更新数据的最简单(但不是最好)的方法是:

<强> JS

$("#UpdateTBody").on("click", function () {
    $.ajax({
          url : "script.asp",
          ...,
          success: redrawTBody
    });

    // let's say success callback receives HTML in data argument
    function redrawTBody (data) {
        // disclaimer : this is simple, but not the best way 
        // drawing table
        $("ContentId").html(data);
    }
});

script.asp返回的HTML

<tr> <!-- row 1 --> </tr>
<!-- following rows -->

当涉及到更改网址时,更好的方法是使用 location.assign(location.href +&#39; #ContentId&#39;) location.hash =& #34;内容识别&#34;