2011-07-26 41 views
0

使用下面的代码我显示弹出窗口。我使用了动画方法toggle()。但它只显示一次弹出窗口。是什么原因?我怎么解决这个问题?为什么toggle()方法在我的程序中无法正常工作?

代码:

$(document).ready(function() 
{ 
     $(".ishow").click(function() 
     { 
      var info=$(this).attr("id"); 
      var id=info.replace("/",""); 

      var cor=$(".rd"+id).offset(); 
      var x=cor.left; 
      var y=cor.top; 

      $.ajax 
      ({ 
       type:"post", 
       url:"roomstaypopup.php", 
       data:"id="+info, 
       success: function(html) 
       {       
        $("#popup"+id).css({"display":"block","left":x-51,"top":y+18}); 
        $("#popup"+id).toggle(); 
        $("#popup"+id).html(html); 
       } 
      }); 

     }); 
}) 
+1

提供你的html请 –

+0

对于每个'.ishow你真的有一个单独的'#popupX'元素'元素?另外,为什么'切换'?你正在设置'display:block',然后调用'toggle',它应该隐藏**元素,这看起来可能不是你想要的。 –

回答

3

您正在将.toggle()之前的样式设置为“display”:“block”,这意味着.toggle()将始终隐藏该元素。

尝试删除"display":"block",。另外.toggle()将不会动画,除非你添加一个持续时间,如.toggle(500);。但为了您的目的,我想您可能需要使用.show();而不是.toggle(500);,并在您致电show();toggle();之前放$("#popup"+id).html(html);,以确保在动画开始之前插入了html。

+0

谢谢保罗。现在我的程序正常工作。 – Hearaman

+0

@Hearaman很高兴听到我可以帮助:) – Paulpro

+0

@Hearaman请确保接受这个答案,如果它解决了你的问题。 :-) – GregL

1

我敢肯定拨动最终修改显示的CSS属性。您确定#popup + id的.css设置不会影响切换吗?

切换应显示它的第一次点击,然后将其隐藏下一个。但是,如果在触发toggle()之前用CSS显示它,则可能每次都切换它。

尝试注释掉上面的toggle()行。无论如何,这是我的猜测。

0

切换按照您的说法工作,因为它只是根据可见性显示或隐藏元素。在你的情况下,你使用display = block来调用它,它应该总是将它设置为none,这样就隐藏了它

相关问题