<ul id="Menu">
<li title="1"><a>管理片区</a></li>
</ul>juqery:$(function(){
$("#Menu li").hover(
function(){
id=$(this).attr("title")
li=$(this)
ul=$(this).children("ul");
$.get("OrganizeCity-model-get.php",{id:id},function(data){li.append(data);})

$(this).children("a").stop(true,true).animate({"backgroundColor":"#111"}).end().siblings("a").animate({"backgroundColor":"#333"});
$(this).children("ul").stop(true,true).fadeIn(300);

},
function(){
$(this).children("ul").stop(true,true).fadeOut(300);
$(this).children("a").stop(true,true).animate({"backgroundColor":"#333"});
})


})为什么第一次hover不显示返回的data ,要再次触发事件才能显示呢?如何改进?

解决方案 »

  1.   

    我在本地试了一下你的代码,可以的,是不是你的OrganizeCity-model-get.php文件里面的问题?
      

  2.   

    执行文件超时?
    OrganizeCity-model-get.php 超过30秒?
    chrome右键审查元素->network,找到 OrganizeCity-model-get.php 查看一下。
      

  3.   

    如果代码逻辑没有问题。那么可以在$.get("OrganizeCity-model-get.php",{id:id},function(data){li.append(data);})
      alert("sf");
    $(this).children("a").stop(true,true).animate({"backgroundColor":"#111"}).end().siblings("a").anim放置一个 alert("sf");看看第一次是不是弹出。有可能是异步请求导致的,改成同步的
    $.ajax({
                    url : 'your url',
                    data:{name:value},
                    cache : false, 
                    async : false,
                    type : "POST",
                    dataType : 'json/xml/html',
                    success : function (result){
                        do something....
                    }
                });
      

  4.   


    求推荐学习jquery的好办法好书籍。。
      

  5.   

    $.get("OrganizeCity-model-get.php",{id:id},function(data){li.append(data).children("ul").show();})这样就好使了,很无解,为什么一定要这样写呢,在一个funciton(){}中写的代码还不是一次执行吗?