jquery .empty()的麻烦

时间:2014-04-24 15:55:36

标签: jquery html dom

我正在使用jquery用一个带有来自Web服务的数据的表填充div但是我注意到如果我重新加载页面,则div没有被覆盖,而是附加到。我查找了jquery .empty()函数,但它似乎对我不起作用

这是我的代码示例:

Div标签

<div id="AccountGrid" class="AccountGridHolder">

</div>

加载函数的Jquery

 $(document).on('pagecontainershow', function (event,ui) {
                 GetAcount();
              });

jquery函数

function GetAcount() {
    $('#AccountGrid').empty()
    var CompanyID = get_localstorage("CompanyID");
        source:
            {
                $.ajax({
                      crossDomain: true,
                      url: "https://webservice/methode",
                      type: "POST",
                      dataType: "json",
                      contentType: "application/json; charset=utf-8",
                      data: "{ 'CompanyID' : '" + CompanyID + "'}",
                      dataFilter: function (data) { return data; },
                      success: function (data) {
                          var Table1 = '<fieldset><legend>Company Name</legend><table id="CompanyRow" class="AccountGrid" ><tr><td>';
                          Table1 = Table1 + data.d[0] + '</td></tr></table></feildset>';
                          $(".AccountGridHolder").append(Table1);
                      },
                      error: function (Error) {
                          console.log('CompanyID (fail) = ' + CompanyID);
                          console.log(Error.status);
                          console.log(Error.statusText);
                          console.log(Error.responseText);
                      }
                  });
              }
          }

谁能看到我做错了什么?

5 个答案:

答案 0 :(得分:2)

你的选择器错了。如果您想按ID匹配,则应为$('#AccountGrid')

答案 1 :(得分:0)

而不是append()使用html(),它将取代div的内容。

$(".AccountGridHolder").html(Table1);

答案 2 :(得分:0)

$(".AccountGridHolder").empty();
$(".AccountGridHolder").append(Table1);

相当于

$(".AccountGridHolder").html(Table1);

那么为什么要写两行而不是一行呢?去找后者。

答案 3 :(得分:0)

嗯,我不确定为什么,但当我移动空()行时,它开始工作......这是我现在的代码

function GetAcount() {
            var CompanyID = get_localstorage("CompanyID");
        source:
            {
                $.ajax({
                      crossDomain: true,
                      url: "https://webservice/methode",
                      type: "POST",
                      dataType: "json",
                      contentType: "application/json; charset=utf-8",
                      data: "{ 'CompanyID' : '" + CompanyID + "'}",
                      dataFilter: function (data) { return data; },
                      success: function (data) {
                          $('#AccountGrid').empty();
                          var Table1 = '<fieldset><legend>Company Name</legend><table id="CompanyRow" class="AccountGrid" ><tr><td>';
                          Table1 = Table1 + data.d[0] + '</td></tr></table></fieldset>';
                          $(".AccountGridHolder").append(Table1);
                      },
                      error: function (Error) {
                          console.log('CompanyID (fail) = ' + CompanyID);
                          console.log(Error.status);
                          console.log(Error.statusText);
                          console.log(Error.responseText);
                      }
                  });
              }
          }

我发现这很奇怪,因为这表明问题是div没有加载但是这段代码只在'pagecontainershow'事件被触发后执行

答案 4 :(得分:-1)

尝试使用.html()而不是.append()

$(".AccountGridHolder").html(Table1);