2013-01-04 77 views
1

我有div,它的ID是: manufacturer_63 ... 它的風格是:display:none,visibility:hidden。我的jquery開關有什麼問題

我寫的是:

$('select.styled2').change(function() { 

    var id = this.value; 

      $.ajax({ 
       type: "GET", 
       url: 'index.php?act=manufacturerHome&id='+id, 
       success: function(data) { 

       $("#manufacturer_"+id).html(data); 
       } 
      }); 

    $("#manufacturer_"+id).css('visibility','visible'); 
    $("#manufacturer_"+id).toggle("slow"); 

}); 

它不會觸發它。 如果我嘗試:

$("#manufacturer_"+id).css('display','block'); 

,而不是切換 - 它的工作原理。

如果我只是切換它的工作。

+0

你試過只用slideDown('slow')而不是toggle('slow')?你的意圖是顯示元素,而不是切換它。 – Roonaan

+0

我們可以看到你的CSS和HTML嗎?我在上面構建了一個快速版本的代碼,並且切換工作。 http://jsfiddle.net/7QnCj/ –

回答

1

你確實應該這樣做:

$('select.styled2').change(function() { 
    var id = this.value; 

    $.ajax({ 
     type: "GET", 
     url: 'index.php?act=manufacturerHome&id='+id, 
     success: function(data) { 
      $("#manufacturer_"+id).html(data); 
      $("#manufacturer_"+id).css('visibility','visible'); 
      $("#manufacturer_"+id).toggle("slow"); 
     } 
    }); 
}); 

在你的代碼,該元素將照常顯示Ajax調用是否完成,而這將顯示元素後,才AJAX調用成功。

順便說一句,你不需要display: nonevisibility: hidden。只需display: none就足夠了,然後你就可以擺脫$("#manufacturer_"+id).css('visibility','visible');

+0

非常感謝你! – user1936192