在ajax调用之后,jquery隐藏不适用于同一个div类?

时间:2014-01-13 09:49:59

标签: javascript jquery html ajax

1.这是我的代码,我有一个div类内部,使用ajax调用动态加载 并且在ajax调用之后,如果我单击隐藏按钮则无法正常工作。

但它在ajax请求之前完成了工作。

所以为了克服我只是添加一个外部div并隐藏div这次它工作.. 我不知道为什么?

$( "#inner" ).replaceWith( data );  /*and*/  $( "#inner" ).hide();   //not working


$( "#inner" ).replaceWith( data );    /*and*/     $( "#outer" ).hide();  //working

为什么我们不能使用相同的div类?

<html>
  <div id="outer">
  <div id="inner">
    <br /> <br /> <br />
  <div>  <input type="button" value="signup"  onclick="changeval();"/>
  </div>
  <br /> <br />  
  </div>
  </div>
  <input type="button" value="hide" onclick="onhide();"/>    
  <script language="javascript"> 
   function changeval(context)
   {          
     var typeval="sdsf";
     var url="sdfsdf";
     $.ajax({
        type:'POST',
        url:'htp://sscs/registration',
        data:'&typeval='+typeval+'&url='+url,
        success:function(data) { 
          $( "#inner" ).replaceWith( data );           
        }        
      });         
    }
    function onhide()
    {
      $( "#inner" ).hide();
    }
  </script>

4 个答案:

答案 0 :(得分:1)

使用.html()

 $("#inner").html(data);

代替.replaceWith()

  

用提供的新内容替换匹配元素集中的每个元素,并返回已删除的元素集。

DEMO of replaceWith,在这里你可以看到第二类的div被输入内容替换。

答案 1 :(得分:1)

它不起作用,因为您替换了<div id="inner">

包括div及其ID。 <div id="outer">仍然存在,因此您的其他隐藏有效,它仍会找到div

答案 2 :(得分:0)

像这样使用:

$( "#inner" ).replaceWith( function(){
    return $(this).data();
} );

答案 3 :(得分:0)

在你的ajax调用之后,#inner-div不再存在了。您正在使用ajax请求的响应替换它。

您可以使用$("#inner").html(data);来保留div,然后在收到回复后隐藏它。