今儿个写个下拉菜单效果,需要获取title的id,然后获取该id的坐标,给弹出菜单一个显示位置。
问题来了:在ie8和ff里面,可以获取到该id的坐标,而ie7、ie6获取的坐标都是0,0....
是命名可能重复?...改了好几个名字还是获取不到...
求解...
网页源代码:
<div class="top1" id="menu_img">
         <a id="chanpin">策划案例</a>
            <a href="#" id="no">旅游婚纱</a>
            <a id="no" href="server.html">服务项目</a>
            <a id="no" href="aboutus.html">关于我们</a>
            <a id="no" href="index.html"  style="margin:0 10px 0 20px;; background:none; width:190px; height:87px;"><img src="images/index_03.jpg"/></a>
            <a id="no" href="news.html">最新新闻</a>
            <a id="no" href="contact.html">联系我们</a>
            <a id="no" href="blong.html">博 客</a>
            <a id="no" href="weibo.html">微 博</a>
           
        </div>
js代码:
$("#chanpin").mouseover(function(){
 
 var menu_img=document.getElementById("chanpin");
 var x=menu_img.offsetLeft;
 var y=menu_img.offsetTop;
 $("#sub_menu").css({"top": (y+35)+"px",             "left": (x+0)+"px" }).show("fast");
 $("#chanpin").css({"background":"#80064a",
                             "color":"#fff"
     });
 })IE6下表现:IE8下表现

解决方案 »

  1.   


    $("#chanpin").mouseover(function(e){
      var x=e.pageX;
      var y=e.pageY
      $("#sub_menu").css({"top": (y+35)+"px","left": (x+0)+"px"}).show("fast");
      $("#chanpin").css({"background":"#80064a","color":"#fff"});
    });
      

  2.   

    额...图片显示不了...就IE8下面是在标题下方,IE6是偏的..
      

  3.   

    这个OK了...但是传的值"e"是鼠标当前的位置...也就是说该弹出的div是不固定的...那给人的感觉就好像是歪的一样...
      

  4.   

    var x=$("#chanpin").offset().left             
    var y=$("#chanpin").offset().top + $("#chanpin").height();
      

  5.   

    多谢!!!等了三天,终于搞定了...不过有个问题想请问...同样的代码,同样的js..只是页面不同,为毛我之前那个能获取...这个就不行?这个...在EI8、火狐都OK,就是IE67不行..可有解?!
      

  6.   

    offsetLeft/offsetTop等都相对已经定位的父级元素的偏移值,
    父元素要定位为:absolute/relative,如果父元素不定位就相对顶级对象.
    是否是你的css影响到了?
    给你个地址你可以参考一下:
    http://www.cnblogs.com/jilleanwong/archive/2008/09/22/1295783.html
      

  7.   

    JQUERY是兼容IE6+和火狐的   
    JAVASCRIPT下得到绝对位置脚本代码  需要循环所有的父
    1function GetPosition(obj)
    2{
    3 var left = 0;
    4 var top   = 0;
    5
    6 while(obj != document.body)
    7 {
    8        left = obj.offsetLeft;
    9        top   = obj.offsetTop;
    10
    11        obj = obj.offsetParent;
    12 }
    13
    14 alert("Left Is : " + left + "\r\n" + "Top   Is : " + top);
    15}