1

我有一些使用 JQuery 加载函数更新的类。当页面首次加载时,我将它们作为目标并像这样隐藏它们:

$('.classname').hide();

我这样做 ajaxload是这样的:

$.ajax({  
  type: "GET",  
  url: "index.php",  
  data: dataString,  
  success: function() {  
      $('.wrapperClass').load('index.php .wrapperClass');
      $('.classname').hide();
  },
      error: function() {

      }  
});

为了简单起见,html 是这样的:

<div class="wrapperClass">
    <span class="classname">Content 1</span>
    <span class="classname">Content 2</span>
</div>

问题是,wrapperClassget 中的所有内容都重新加载正常,但是内部的 span 没有被隐藏,它们重新出现,我不知道在通过 Ajax 重新加载它们后如何隐藏它们。

4

2 回答 2

5

您可能(\应该)知道,load这是一个 ajax 请求,因此当您尝试隐藏元素时不会加载元素。

将处理加载内容的代码移至完成回调:

success: function() {  
      $('.wrapperClass').load('index.php .wrapperClass', function(){
              $('.classname').hide();              
          });
      }

完整代码:

$.ajax({
    type: "GET",
    url: "index.php",
    data: dataString,
    success: function() {
        $('.wrapperClass').load('index.php .wrapperClass', function() {
            $('.classname').hide();
        });
    },
    error: function() {

    }
});​

load 文档

.load( url [, data] [, complete(responseText, textStatus, XMLHttpRequest)])

  • url包含请求发送到的 URL 的字符串。
  • data随请求发送到服务器的映射或字符串。
  • complete(responseText, textStatus, XMLHttpRequest) 请求完成时执行的回调函数。
于 2012-04-09T20:18:23.120 回答
1

您需要坚持$('.classname').hide();使用.load(). 现在,它试图在元素存在于页面之前隐藏它们。尝试这个:

$.ajax({  
  type: "GET",  
  url: "index.php",  
  data: dataString,  
  success: function() {  
      $('.wrapperClass').load('index.php .wrapperClass', function() {$('.classname').hide();});
  },
      error: function() {

      }  
});
于 2012-04-09T20:21:13.780 回答