如果没有关于id的ajax信息,请删除div

时间:2011-01-04 14:59:41

标签: javascript jquery ajax

我有这个代码

function get_players()
{
 $.ajax({   
    type:   "POST",
    url:    "get_players.php",   
    dataType: "html",  
    success:  function(data) {
        var str = data;
    var chars = str.split("<br />");
    for(var i = chars.length - 1; i >= 0 ;i-- ) {
     chars[i] = chars[i].split('/');
     var o = document.getElementById(chars[i][0]);
     var aimt = i;
     if (!o) {
      if (aimt!=chars.length -1) {
       $('#gracze').html('<div id="'+chars[aimt][0]+'" class="char"><div id="char_name" style="left:-'+(((chars[aimt][3].length*9)/2)-16)+'px;width:'+(chars[aimt][3].length*9)+'px;">'+chars[aimt][3]+'</div></div>'+$('#gracze').html());
       $('#'+chars[aimt][0]).css("top", chars[aimt][2]*32-16+"px");
       $('#'+chars[aimt][0]).css("left", chars[aimt][1]*32+"px");
       $('#'+chars[aimt][0]).css("z-index", chars[aimt][2]+1);
      }
     } else {
      $('#'+chars[aimt][0]).animate({
       "top": chars[aimt][2]*32-16+"px", "left": chars[aimt][1]*32+"px"
      }, { duration: 300});
      //$('#'+chars[aimt][0]).css("top", chars[aimt][1]*32-16+"px");
      //$('#'+chars[aimt][0]).css("left", chars[aimt][2]*32+"px");
      $('#'+chars[aimt][0]).css("z-index", chars[aimt][2]);
     }
    }
  }});
 setTimeout("get_players();", 300);
}

接收来自此

的玩家
5/7/13/GodFather
6/7/10/dsfsf
7/8/13/fdsf

如果没有关于用户的信息

,我想询问如何删除div

2 个答案:

答案 0 :(得分:1)

由于您不知道要删除哪个div元素,唯一的方法是将它们全部删除,然后添加从AJAX响应中获取的那些元素。

要全部删除它们,请使用您已有的课程:

$(".char").remove();

在遍历各行之前,将此行添加到success函数。

好的,您可以将AJAX调用返回的ID值保存在数组中,然后删除数组中不存在的任何ID值。修改过的功能代码:

success:  function(data) {
    var str = data;
    var chars = str.split("<br />");
    var arrDivIDs = new Array();
    for(var i = chars.length - 1; i >= 0 ;i-- ) {
        chars[i] = chars[i].split('/');
        arrDivIDs[chars[i][0]] = true;
        var o = document.getElementById(chars[i][0]);
        var aimt = i;
        if (!o) {
            if (aimt!=chars.length -1) {
                $('#gracze').html('<div id="'+chars[aimt][0]+'" class="char"><div id="char_name" style="left:-'+(((chars[aimt][3].length*9)/2)-16)+'px;width:'+(chars[aimt][3].length*9)+'px;">'+chars[aimt][3]+'</div></div>'+$('#gracze').html());
                $('#'+chars[aimt][0]).css("top", chars[aimt][2]*32-16+"px");
                $('#'+chars[aimt][0]).css("left", chars[aimt][1]*32+"px");
                $('#'+chars[aimt][0]).css("z-index", chars[aimt][2]+1);
            }
        } else {
            $('#'+chars[aimt][0]).animate({
                "top": chars[aimt][2]*32-16+"px", "left": chars[aimt][1]*32+"px"
            }, { duration: 300});
            $('#'+chars[aimt][0]).css("z-index", chars[aimt][2]);
        }
    }

    $(".char").each(function(index) {
        if (!arrDivIDs[$(this).attr("id")])
            $(this).remove();
    });
}

答案 1 :(得分:0)

使用.remove() http://api.jquery.com/remove/

修改

如果您检查是否有任何数据返回(假设var o),您可以执行此操作:

o.remove();

编辑2

您可以在jQuery中使用变量来选择id:

$("#" + chars[i][0]).remove();