2013-01-04 95 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