jQuery下拉菜单插件Tendina js代码

版权:原创 更新时间:1年以上
[该文章底部包含文件资源,可根据自己情况,决定是否下载资源使用,时间>金钱,如有需要,立即查看资源]

以下是 jQuery下拉菜单插件Tendina js代码 的示例演示效果:

当前平台(PC电脑)
  • 平台:

部分效果截图:

jQuery下拉菜单插件Tendina js代码

HTML代码(index.html):

<!DOCTYPE html>
<html>
<head>
  <title>jQuery�����˵����Tendina</title>
  <link rel="stylesheet" href="css/demo.css">
</head>
  <body>
    <ul class="dropdown">
      <li>
        <a href="#">Menu 1</a>
        <ul>
          <li><a href="#">Submenu 1</a></li>
        </ul>
      </li>
      <li>
        <a href="#">Menu 2</a>
        <ul>
          <li><a href="#">Submenu 2</a></li>
          <li><a href="#">Submenu 2</a></li>
          <li><a href="#">Submenu w/ childrens</a>
            <ul>
              <li>Subsubmenu 2</li>
              <li>Subsubmenu 2</li>
            </ul>
          </li>
        </ul>
      </li>
      <li>
        <a href="#">Menu 3</a>
        <ul>
          <li><a href="#">Submenu 3</a></li>
          <li><a href="#">Submenu 3</a></li>
        </ul>
      </li>
    </ul>

    <script src="js/jquery-1.11.0.min.js"></script>
    <script src="js/tendina.js"></script>
    <script>
      $('.dropdown').tendina({
        animate: true,
        speed: 500,
        openCallback: function($clickedEl) {
          console.log($clickedEl);
        },
        closeCallback: function($clickedEl) {
          console.log($clickedEl);
        }
      })
    </script>
</body>
</html>

JS代码(tendina.js):

/*Tendina jQuery plugin v0.8.1Copyright (c) 2014 Ivan PrignanoReleased under the MIT License */
(function(){
	var __bind = function(fn,me){
	return function(){
	return fn.apply(me,arguments);
}
;
}
,__slice = [].slice;
	(function($,window){
	var Tendina;
	Tendina = (function(){
	Tendina.prototype.defaults ={
	animate:true,speed:500}
;
	function Tendina(el,options){
	this._clickHandler = __bind(this._clickHandler,this);
	this.options = $.extend({
}
,this.defaults,options);
	this.$el = $(el);
	this._checkOptions();
	this.$el.addClass('tendina');
	this.firstLvlSubmenu = ".tendina > li";
	this.secondLvlSubmenu = ".tendina > li > ul > li";
	this.firstLvlSubmenuLink = "" + this.firstLvlSubmenu + " > a";
	this.secondLvlSubmenuLink = "" + this.secondLvlSubmenu + " > a";
	this._hideSubmenus();
	this._bindEvents();
}
Tendina.prototype._bindEvents = function(){
	return $(document).on('click.tendina',"" + this.firstLvlSubmenuLink + "," + this.secondLvlSubmenuLink,this._clickHandler);
}
;
	Tendina.prototype._unbindEvents = function(){
	return $(document).off('click.tendina');
}
;
	Tendina.prototype._isFirstLevel = function(clickedEl){
	if ($(clickedEl).parent().parent().hasClass('tendina')){
	return true;
}
}
;
	Tendina.prototype._clickHandler = function(event){
	var clickedEl,submenuLevel;
	clickedEl = event.currentTarget;
	submenuLevel = this._isFirstLevel(clickedEl) ? this.firstLvlSubmenu:this.secondLvlSubmenu;
	if (this._hasChildenAndIsHidden(clickedEl)){
	event.preventDefault();
	return this._openSubmenu(submenuLevel,clickedEl);
}
else if (this._isCurrentlyOpen(clickedEl)){
	event.preventDefault();
	return this._closeSubmenu(clickedEl);
}
}
;
	Tendina.prototype._openSubmenu = function(el,clickedEl){
	var $clickedNestedMenu,$firstNestedMenu,$lastNestedMenu;
	$firstNestedMenu = $(el).find('> ul');
	$lastNestedMenu = $(el).find('> ul > li > ul');
	$clickedNestedMenu = $(clickedEl).next('ul');
	$(el).removeClass('selected');
	$(clickedEl).parent().addClass('selected');
	this._close($firstNestedMenu);
	this._open($clickedNestedMenu);
	if (el === this.firstLvlSubmenu){
	$(el).find('> ul > li').removeClass('selected');
	this._close($lastNestedMenu);
}
if (this.options.openCallback){
	return this.options.openCallback($(clickedEl).parent());
}
}
;
	Tendina.prototype._closeSubmenu = function(el){
	var $clickedNestedMenu;
	$clickedNestedMenu = $(el).next('ul');
	$(el).parent().removeClass('selected');
	this._close($clickedNestedMenu);
	if (this.options.closeCallback){
	return this.options.closeCallback($(el).parent());
}
}
;
	Tendina.prototype._open = function($el){
	if (this.options.animate){
	return $el.slideDown(this.options.speed);
}
else{
	return $el.show();
}
}
;
	Tendina.prototype._close = function($el){
	if (this.options.animate){
	return $el.slideUp(this.options.speed);
}
else{
	return $el.hide();
}
}
;
	Tendina.prototype._hasChildenAndIsHidden = function(el){
	return $(el).next('ul').length > 0 && $(el).next('ul').is(':hidden');
}
;
	Tendina.prototype._isCurrentlyOpen = function(el){
	return $(el).parent().hasClass('selected');
}
;
	Tendina.prototype._hideSubmenus = function(){
	$("" + this.firstLvlSubmenu + " > ul," + this.secondLvlSubmenu + " > ul").hide();
	return $("" + this.firstLvlSubmenu + " > ul").removeClass('selected');
}
;
	Tendina.prototype._showSubmenus = function(){
	$("" + this.firstLvlSubmenu + " > ul," + this.secondLvlSubmenu + " > ul").show();
	return $("" + this.firstLvlSubmenu).removeClass('selected');
}
;
	Tendina.prototype._checkOptions = function(){
	if (this.options.animate !== true || false){
	console.warn("jQuery.fn.Tendina - '" + this.options.animate + "' is not a valid parameter for the 'animate' option. Falling back to default value.");
}
if (this.options.speed !== parseInt(this.options.speed)){
	return console.warn("jQuery.fn.Tendina - '" + this.options.speed + "' is not a valid parameter for the 'speed' option. Falling back to default value.");
}
}
;
	Tendina.prototype.destroy = function(){
	this.$el.removeData('tendina');
	this._unbindEvents();
	this._showSubmenus();
	this.$el.removeClass('tendina');
	return this.$el.find('.selected').removeClass('selected');
}
;
	Tendina.prototype.hideAll = function(){
	return this._hideSubmenus();
}
;
	Tendina.prototype.showAll = function(){
	return this._showSubmenus();
}
;
	return Tendina;
}
)();
	return $.fn.extend({
	tendina:function(){
	var args,option;
	option = arguments[0],args = 2 <= arguments.length ? __slice.call(arguments,1):[];
	return this.each(function(){
	var $this,data;
	$this = $(this);
	data = $this.data('tendina');
	if (!data){
	$this.data('tendina',(data = new Tendina(this,option)));
}
if (typeof option === 'string'){
	return data[option].apply(data,args);
}
}
);
}
}
);
}
)(window.jQuery,window);
}
).call(this);
	

CSS代码(demo.css):

/* http://meyerweb.com/eric/tools/css/reset/ * v2.0 | 20110126 * License:none (public domain) */
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline;}
/* HTML5 display-role reset for older browsers */
article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block;}
body{line-height:1;}
ol,ul{list-style:none;}
blockquote,q{quotes:none;}
blockquote:before,blockquote:after,q:before,q:after{content:"";content:none;}
table{border-collapse:collapse;border-spacing:0;}
*{box-sizing:border-box;-webkit-font-smoothing:antialiased;}
.dropdown{position:absolute;left:0;top:0;height:100%;width:250px;background-color:#f7f7f7;font-family:"Montserrat",sans-serif;padding-top:20px;font-size:12px;}
.dropdown li{padding:0 10px;}
.dropdown li.selected{background-color:#f2f2f2;}
.dropdown li a{display:block;width:100%;padding:10px;text-decoration:none;text-transform:uppercase;color:black;}
.dropdown li > ul li{padding:0 20px;}
.dropdown li > ul li a{color:gray;}
.dropdown li > ul li > ul li{padding:10px 30px;}
附件:下载该文件资源,减少时间成本(增值服务)
留言
该资源可下载
File Source
.rar
36.09 KB
jquery特效1
最新结算
jquery虚拟键盘中文打字效果js代码
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
jquery虚拟键盘中文打字效果js代码
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
HTML5实现CSS滤镜图片切换特效代码
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
jQuery头像裁剪插件cropbox js代码
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
jQuery头像裁剪插件cropbox js代码
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
jQuery+css3实现信封效果
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
我们力求给您提供有用的文章,再此基础上,会附加营收资源,不做任何广告,让平台可以更好发展 若您发现您的权利被侵害,或使用了您的版权,请发邮件联系 sunlifel@foxmail.com ggbig觉得 : 不提供源码的文章不是好文章
合作伙伴
联系我们
  • QQ:21499807
  • 邮箱:sunlifel@foxmail.com
  • QQ扫一扫加QQ
    QQ扫一扫
Copyright 2023-2024 ggbig.com·皖ICP备2023004211号-1
打赏文章