jquery 插件之仿“卓越亚马逊”首页弹出菜单效果

 更新时间:2008年12月25日 14:46:26   作者:  
用jquery实现的弹出菜单插件

复制代码 代码如下:

/*弹出式菜单*/
//没剑 2008-07-03
//http://regedit.cnblogs.com
/*参数说明*/
//showobj:要显示的菜单ID
//timeout:延时时间,鼠标停留/离开后延时多久开始显示/隐藏菜单
//speed:菜单显示速度,数字越大,显示越慢,默认为100
//调用示例:$("#button").DMenu("#content");
jQuery.fn.DMenu=function(showobj,timeout,speed){
timeout=timeout?timeout:300;
speed=speed?speed:100;
//按钮对象
var button=$(this);
//延时计数器
var timer=null;
//隐藏的浮动层
var hideDiv=$("<div></div>");
//容器对象
var Container=$("<div id=\"Container\"></div>");
Container.hide();
hideDiv.append(Container);
//菜单对象
var jqShowObj=$(showobj);
//隐藏菜单
jqShowObj.hide();
//菜单显示的状态
var display=false;
//按钮的offset
var offset=button.offset();
//菜单区高
var height=jqShowObj.height();
//菜单区宽
var width=jqShowObj.width();
//按钮的高
var btnHeight=button.height();
//按钮的宽
var btnWidth=button.width();
//定位层放到最前面
$(document.body).prepend(hideDiv);
//放到容器中
//Container.append(jqShowObj);

//****显示菜单方法开始****//
var showMenu=function(){
//如果菜单为显示则退出操作
if (display)
{
return false;
}
//设置容器属性
Container.css({
margin:"0 auto",
width:btnWidth+"px",
height:btnHeight+"px"
});
//定位隐藏层
hideDiv.css({
position:"absolute",
top:offset.top+"px",
left:offset.left+(btnWidth/2)-(width/2)+"px",
height:height+"px",
width:width+"px"
}).show();
//给容器加个黑边框
Container.css({
border:"1px solid #666666"
});
//显示定位层
//高宽慢慢增大
Container.animate({
marginTop:btnHeight+4,
height:height+4,
width:width+4,
opacity:'100'},speed,function(){
//动画结束时 start//
//显示菜单
jqShowObj.show();
//添加菜单入容器
Container.append(jqShowObj);
//去除边框
Container.css({
border:"0px"
});
//显示状态置为true
display=true;
//鼠标移入
jqShowObj.mouseover(function(){
clearTimeout(timer);
});
//鼠标移开
jqShowObj.mouseout(function(){
hideMenu();
});
//动画结束时 end//
});
};
//****显示菜单方法结束****//

//****隐藏菜单方法开始****//
var hideMenu=function(){
clearTimeout(timer);
//延时隐藏菜单
timer=setTimeout(function(){
//显示边框
Container.css({
border:"1px solid #666666"
});
//清空容器
Container.empty();
//收缩容器
Container.animate({
width:btnWidth,height:btnHeight,marginTop:'0', opacity: '0'
}, speed,function(){
//动画结束时 start//
//隐藏容器
Container.hide();
//定位层隐藏
hideDiv.hide();
//显示状态置为false
display=false;
//动画结束时 end//
});
}, timeout);
};
//****隐藏菜单方法结束****//

//绑定按钮鼠标经过事件
button.hover(function(e){
//延时显示菜单
clearTimeout(timer);
timer=setTimeout(function(){
showMenu();
}, timeout);
},function(){
clearTimeout(timer);
//鼠标离开按钮时,如果菜单还是显示状态则隐藏
if(display){
timer=setTimeout(function(){
hideMenu();
},timeout);
}
});
};

注:对于select挡住弹出菜单的问题,因为与插件没有关系,所以在此,偶没有解决,放哪个select在哪只是想提醒大家使用弹出菜单时要注意到这个问题,具体的解决方法可以自动搜索,或者在排版上作调整。
文件打包下载

相关文章

  • JQuery拖拽元素改变大小尺寸实现代码

    JQuery拖拽元素改变大小尺寸实现代码

    "元素拖拽改变大小"其实和"元素拖拽"一个原理,以下附出源码原型,弄明白了原理再扩展其他实际应用,思路就变得简单、清晰得多了
    2012-12-12
  • Jquery中Event对象属性小结

    Jquery中Event对象属性小结

    这篇文章主要介绍了Jquery中Event对象属性的操作方法的总结,非常的详细,是篇十分不错的文章,这里推荐给大家。
    2015-02-02
  • jquery.pager.js分页实现详解

    jquery.pager.js分页实现详解

    这篇文章主要为大家详细介绍了jquery.pager.js分页的实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • 使用jQuery ajaxupload插件实现无刷新上传文件

    使用jQuery ajaxupload插件实现无刷新上传文件

    项目中会经常用到AJAX无刷新上传图片,但是iframe上传和flash插件都是比较复杂的,所以就找了一个jquery的插件。下面通过实例代码给大家介绍使用jQuery ajaxupload插件实现无刷新上传文件功能,需要的朋友参考下吧
    2017-04-04
  • jquery数组之存放checkbox全选值示例代码

    jquery数组之存放checkbox全选值示例代码

    使用jquery数组可以存放checkbox全选值,下面有个不错的示例,感兴趣的朋友可以参考下
    2013-12-12
  • jQuery实现带滚动导航效果的全屏滚动相册实例

    jQuery实现带滚动导航效果的全屏滚动相册实例

    这篇文章主要介绍了jQuery实现带滚动导航效果的全屏滚动相册,涉及jQuery针对页面图片元素与鼠标事件的相关操作技巧,需要的朋友可以参考下
    2015-06-06
  • 禁止JQuery中的load方法装载IE缓存中文件的方法

    禁止JQuery中的load方法装载IE缓存中文件的方法

    JQuery是一个很优秀的JS框架,我们在做ajax项目开发是避免不了使用该框架来实现一些ajax的效果,其中该框架中有一个load()方法,该方法是用来在页面不刷新的情况下动态装载服务器端的文件。
    2009-09-09
  • jQuery实现设置、移除文本框默认值功能

    jQuery实现设置、移除文本框默认值功能

    这篇文章主要介绍了jQuery实现设置、移除文本框默认值功能,本文实现是类似html5 placeholder(空白提示)效果,正常时文本框有提示文字,当文本框获得焦点时变为空白,需要的朋友可以参考下
    2015-01-01
  • 基于jQuery实现文字打印动态效果

    基于jQuery实现文字打印动态效果

    这篇文章主要介绍了基于jQuery实现文字打印动态效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • jQuery.uploadify文件上传组件实例讲解

    jQuery.uploadify文件上传组件实例讲解

    这篇文章主要介绍了jQuery.uploadify文件上传组件实例讲解的相关资料,本文图文并茂介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09

最新评论