当代码如下的时候
$(document).ready(function(){  $("#menu_square").bind({    
    mouseover:function(){$("body").css("background-color","red");},  
    mouseout:function(){$("body").css("background-color","#FFFFFF");}  
  });
});
提示消息: 'guid' 为空或不是对象
而当代码如下的时候
$(document).ready(function(){  $("button").bind({    
    mouseover:function(){$("body").css("background-color","red");},  
    mouseout:function(){$("body").css("background-color","#FFFFFF");}  
  });
});
不提示错误
请问问题出现在哪里?

解决方案 »

  1.   

    关键在于这里$("#menu_square") 和 $("button")的不同。前者jQuery不能判断是什么类型的DOM,
    因为任何一个页面元素都可以用menu_square的ID,如Button,Div,Span,A等,有的元素支持
    mouseover和mouseout事件,而有的不支持。而后者jQuery可以判断是一个按钮,而根据W3C规范,Button是有mouseover和mouseout事件的。
      

  2.   


    那么,像金山首页里面的javascript代码中有如下的代码
    $("#navi_menu1").bind({
    mouseenter: function(){
    $("#navi_submenu1").stop(true,true);
    $("#navi_submenu2").stop(true,true);
    $("#navi_submenu3").stop(true,true);
    $("#navi_submenu4").stop(true,true);
    $("#navi").find(".navi_submenu").hide();
    $("#navi_submenu1").height(510);
    $("#navi_submenu1").slideDown();
    },
    mouseleave: function(){
    $("#navi_submenu1").delay(300).slideUp();
    }
    })
    也是没有问题的,这又是怎么一回事
      

  3.   

    提示消息: 'guid' 为空或不是对象请问这个代码在哪里
      

  4.   

    提示是在下面这行出错了
      $("#menu_square").bind({    
      

  5.   

    代码应该是没错的,应该是你程序其他有地方有“guid”的变量或者什么的吧
      

  6.   


    是因为,他确定了他用navi_menu1标记的元素,支持这些事件。
      

  7.   

    guid 这个在你的jquery代码中啊
      

  8.   

    id=menu_square的元素确实存在么?
    你说这么半天,还不及你把相关的html代码贴一贴来得实在。你这么问问题,看的人该有多累呀?
      

  9.   


    我已经上传了代码,在
    http://download.csdn.net/detail/none2012/4742815
      

  10.   

    //不就直接 来这样的!
     $("#menu_square").mouseover(function(){
      $("body").css("background","red");
      alert('over');
      });
      
     $("#menu_square").mouseout(function(){
      $("body").css("background","blue");
         alert('out');
      });
      

  11.   

    #menu_square ?确定是否存在 , 是静态HTML 元素还是动态加载的?
    如果是动态的加载的 那么 你$("#menu_square").bind  用bind是不行的
    必须换成live 
      

  12.   

      你说有的元素不支持 over 和 out 事件,那你能举个例子吗?哪些元素?我想了解了解下?
      

  13.   


    下面的代码就不支持:  <input type="hidden" onmouseover="alert('hidden')"/>
      

  14.   


    去多看看js基础吧。目标对象是隐藏域,它都不可见了,你鼠标还怎么over和out??
      

  15.   

    你的代码看了下,你的jquery.js版本太老了,那版本还不支持JqueryDOM的多个事件绑定,换个新版本的jquery-core就可以了,需要注意的是,jquery在1.5版本后有很多比较大的改动,详细可以看api的相关说明
      

  16.   

    先回答Lz的问题:jquery的问题,去下载一个新版本的jquery即可。同时。因为<div class="W_miniblog">中W_miniblog定义了一个背景图片的原因,你原来的代码将看不出效果。你若想达到body背景色的效果,可以改为:
    $(function(){
      $("#menu_square").css("background-color","red");
      var o=$("body div:eq(0)");
      var bg=o.css("background-image");//先保存好原来的背景图片,以便在mouseout事件中还原
      $("#menu_square").bind({
        mouseover:function(){o.css("background","red");},  
        mouseout:function(){o.css("background",bg);}  
      });
    });
      

  17.   


    楼主的这个bind,怎么看都像是随手从api文档里copy出来的测试代码,并非实际要实现的功能,呵呵
      

  18.   


    再来说说你吧
    从你1楼的回贴就已经是问题了,不是“元素不支持”,是“状态不可见的元素不支持”你还懂呀?14楼的朋友问你话的意思你还知道呀?以事件效果来说,你15楼举的例子是正确的,但以元素来说,它是一个input,你还明白?只是因为type='hidden'变成了一个隐藏域,元素状态为不可见,才使得可视化时事件找不着目标,才失效的。我在16楼回的话并不是特指你15楼的代码本身,是对像整个回复的说明,你还明白??你若对Lz说:元素不可见时,onmouseover事件无效,我话都不会有半句你可看过Lz上传的代码呀?人家操作的是一个可见的li,你看都没看,还一直不管不顾的说自己的话,这就是你的态度?我昨天就看过了Lz上传的代码了。要不是忙得没时间,我早回了。还好意思说我是瞎子?前面的回贴就不说什么了,Lz上传了代码,你要是有态度,你去下载了看过,你就应该知道根本不是你以为的那些问题,你15楼的例子还用得说出么?到底是你瞎呀还是我瞎呀?别把老实人当没脾气的。
      

  19.   


    呵呵,看Lz一开始描述问题说。$("button")就没问题的那段就能发现是API中的实例了,连颜色代码都没改的
      

  20.   

    为什么不考虑 $(id).hover(function(){},function(){});?
    hover很寂寞吗