2011-07-26 71 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,這樣就隱藏了它

相關問題