`

jquery做的无限级菜单

阅读更多
/**
 *栏目树分级显示下拉菜单组件
 *作者:CandySunPlus 孙凤鸣
 *example:
 *var colObj2 = {"Items":[
 *				{"name":"菜单项目标题1","topid":"0","colid":"1","value":"菜单项目标题1","fun":function(){}},	
 *				...
 *				]}
 *$("#div").mlnColsel(colObj,{
 *				title:"栏目下拉菜单",
 *				value:"-1",
 *				width:100
 *			});
 *参数:topid 栏目所属,0为一级
 *		colid 栏目ID,0为一级
 *		fun 回调函数
 **/

 (function($){
	$.fn.mlnColsel=function(data,setting){
		var dataObj={"Items":[
			{"name":"mlnColsel","topid":"-1","colid":"-1","value":"-1","fun":function(){alert("undefined!");}}
		]};
		var settingObj={
			title:"请选择",
			value:"-1",
			width:100
		};
		settingObj=$.extend(settingObj,setting);
		dataObj=$.extend(dataObj,data);
		
		var $this=$(this);
		var $colselbox=$(document.createElement("a")).addClass("colselect").attr({"href":"javascript:;"});
		var $colseltext=$(document.createElement("span")).text(settingObj.title);
		var $coldrop=$(document.createElement("ul")).addClass("dropmenu");
		var selectInput = $.browser.msie?document.createElement("<input name="+$this.attr("id")+" />"):document.createElement("input");
 			selectInput.type="hidden";
 			selectInput.value=settingObj.value;
 			selectInput.setAttribute("name",$this.attr("id"));
		var ids=$this.attr("id");
		$this.onselectstart=function(){return false;};
		$this.onselect=function(){document.selection.empty()};
		$colselbox.append($colseltext);
		$this.addClass("colsel").append($colselbox).append($coldrop).append(selectInput);
		
		$(dataObj.Items).each(function(i,n){
			var $item=$(document.createElement("li"));
			if(n.topid==0 || n.topid=="0"){
				$coldrop.append($item);
				$item.html("<span>"+n.name+"</span>").attr({"values":n.value,"id":"col_"+ids+"_"+n.colid});
			}else{
				if($("#col_"+ids+"_"+n.topid).find("ul").length<=0){
					$("#col_"+ids+"_"+n.topid).append("<ul class=\"dropmenu rootmenu\"></ul>");
					$("#col_"+ids+"_"+n.topid).find("ul:first").append($item);
					$item.html("<span>"+n.name+"</span>").attr({"values":n.value,"id":"col_"+ids+"_"+n.colid});
				}else{
					$("#col_"+ids+"_"+n.topid).find("ul:first").append($item);
					$item.html("<span>"+n.name+"</span>").attr({"values":n.value,"id":"col_"+ids+"_"+n.colid});
				}
			}			
		});
		
		$this.find("li").each(function(){
			$(this).click(function(event){
				$colselbox.children("span").text($(this).find("span:first").text());
				$(selectInput).val($(this).attr("values"));
				hideMenu();
				event.stopPropagation();
			});
			if($(this).find("ul").length>0){
				$(this).addClass("menuout");
				$(this).hover(function(){
						$(this).removeClass("menuout");
						$(this).addClass("menuhover");
						$(this).find("ul:first").fadeIn("fast")
						var rootdom = $(this);
						var offset = rootdom.offset();
						var rootLeft=offset.left+141;
						var childWidth=$(document).width()-rootLeft;			
						if(childWidth<141){
							$this.childPath="left"
							$(this).find("ul:first").css({"left":-100+"px"});
						}else{
							$this.childPath="right"	
							$(this).find("ul:first").css({"left":100+"px"});
						}
						
					},function(){
						$(this).removeClass("menuhover");
						$(this).addClass("menuout");
						$(this).find("ul").each(function(){
							$(this).fadeOut("fast");
					});
				});
			}else{
				$(this).addClass("norout");
				$(this).hover(function(){
					$(this).removeClass("norout");
					$(this).addClass("norhover");
					},function(){
					$(this).removeClass("norhover");
					$(this).addClass("norout");
				});
			}
		});
		
		function hideMenu(){
			$this.bOpen=0;
			$(".rootmenu").hide();
			$coldrop.slideUp("fast");
			$(document).unbind("click",hideMenu);
		}
		function openMenu(){
			$coldrop.slideDown("fast");
			$this.bOpen=1;
		}
		$colselbox.click(function(event){
			$(this).blur();
			if($this.bOpen){
				hideMenu();
			}else{
				openMenu();
				$(document).bind("click",hideMenu);
			}
			event.stopPropagation();
		});
		
		$(".rootmenu").each(function(){
			if($.browser.msie){
				$(this).css({"margin-top":"-6px","top":"auto"});
			}else{
				$(this).css({"margin-top":"-25px","top":"auto"});
			}
		});	
	}
 })(jQuery);

 

 

  • 大小: 16.1 KB
分享到:
评论
1 楼 liuzejian4 2011-04-29  
帅哥,没有css 呀

相关推荐

    基于ajax、jquery 通用无限级联菜单

    基于ajax、jquery 通用无限级联菜单; 引用场景: 国家省市级联菜单、任何二级级联菜单、三级菜单、四级菜单、五.... 使用范例:详细参阅District.Selector.js文件 以国家地理信息为例: $(function () { var ...

    js实现无限级菜单(jQuery)

    在JavaScript和jQuery的世界里,构建无限级菜单是一项常见的任务,特别是在网页设计中,它能为用户提供清晰的导航结构。本文将深入探讨如何使用这两种技术来创建一个可扩展且灵活的无限级菜单。 首先,让我们从HTML...

    jQuery多级无限级导航下拉菜单代码

    jQuery多级无限级导航下拉菜单代码, jQuery多级无限级导航下拉菜单代码是一款可智能判断有没有下级菜单列表的网站下拉菜单特效。 js代码 [removed] $(document).ready(function() { $("ul.nav li").hover...

    jquery_无限级联菜单 v1.0-源码.zip

    总结来说,"jquery_无限级联菜单 v1.0-源码.zip"提供了一个学习和实践jQuery无限级联菜单的实例。通过阅读源码,我们可以深入理解如何结合DOM操作、事件处理和CSS样式来实现这种交互效果,这对于提升我们的前端开发...

    jquery-无限级联菜单

    jquery_无限级联菜单,无需ajax,纯json数据调用 简单的调用方式 $.getScript("toregion.js",function(){ var ops = { tree_json:regionConf,//json字符串 tree_json_name:"regionConf",//json字符串变量名称 ...

    s2sh+freemarker+jquery+jquery-treeview 无限级树形菜单.rar

    本项目“s2sh+freemarker+jquery+jquery-treeview 无限级树形菜单”就是这样一个解决方案,它整合了多种技术来实现这一功能。 首先,我们来看“s2sh”。这是Struts2、Spring和Hibernate三者的简称,它们分别是MVC...

    jQuery多级无限级导航下拉菜单.zip

    下面我们将深入探讨jQuery如何实现多级无限级导航下拉菜单的制作。 首先,我们需要理解HTML基础结构。一个基本的导航菜单通常包含一个`&lt;ul&gt;`(无序列表)元素,其中每个菜单项由`&lt;li&gt;`(列表项)表示。对于有子菜单...

    jQuery多级无限级导航下拉菜单代码.zip

    jQuery多级无限级导航下拉菜单是Web开发中常见的交互元素,它允许用户在主菜单项下展开子菜单,提供更丰富的导航体验。这个压缩包包含了一套完整的jQuery实现的多级下拉菜单代码,适合那些希望在自己的网站上添加...

    jquery_无限级联菜单 v1.0

    jquery_无限级联菜单,无需ajax,纯json数据调用 简单的调用方式 $.getScript("toregion.js",function(){ var ops = { tree_json"regionConf",//json字符串变量名称 tree_obj"areas[]",//select name //tree_...

    jquery实现无限级树形菜单特效源码.zip

    本资源"jquery实现无限级树形菜单特效源码.zip"显然是一个利用jQuery来构建无限级树形菜单的示例代码。这种效果常用于网站导航、数据层次展示以及文件目录结构等场景。 首先,我们来看jQuery如何处理树形菜单的基本...

    jQuery手机端无限级导航下拉菜单代码

    "jQuery手机端无限级导航下拉菜单代码"就是一个解决此类问题的方案,它允许用户在一个简洁的界面下访问多级菜单,而无需展开多个屏幕。本文将详细介绍这个代码实现的关键技术和原理。 首先,jQuery是一个广泛使用的...

    jQuery无限级导航菜单效果

    创建jQuery无限级导航菜单的第一步是构建HTML结构。基础的HTML代码应该包含一个`&lt;ul&gt;`元素作为菜单容器,其中包含多个`&lt;li&gt;`元素代表每个菜单项。对于有子级的菜单项,可以在`&lt;li&gt;`元素内嵌套另一个`&lt;ul&gt;`来表示子...

    js javascript 无限级菜单

    在JavaScript和jQuery的世界里,构建无限级菜单是一项常见的任务,特别是在网页设计中,它能够提供一个清晰、层次分明的导航结构。本教程将深入探讨如何使用JavaScript和jQuery创建一个兼容主流浏览器,包括...

    jQuery无限级树菜单网页特效

    总之,jQuery无限级树菜单网页特效的实现涉及到数据处理、DOM操作、事件处理和动画效果等多个方面,理解并掌握这些技术对于提升网页交互体验至关重要。通过不断实践和学习,你将能够创建出更加动态、用户友好的网页...

    jQuery无限级树状菜单.zip

    本资源“jQuery无限级树状菜单”是利用jQuery实现的一种动态展示无限层级数据的菜单系统。这个压缩包中可能包含HTML、CSS和JavaScript文件,用于构建一个交互式的树形结构,适用于网站导航或数据分类展示。 首先,...

    php+jquery无限级分类

    6. **jQuery实现无限级分类**:jQuery提供了多种方法来操作DOM,如`append()`、`prepend()`和`html()`等,可以用于构建和动态更新分类菜单。使用递归函数,可以根据JSON数据的层级关系生成嵌套的HTML结构。 7. **...

    jquery+js 实现无限级菜单(分销)树行结构

    这个案例——"jquery+js 实现无限级菜单(分销)树行结构",提供了一种利用JavaScript库jQuery来创建动态、可扩展的树形菜单的方法。无限级菜单意味着菜单可以包含任意多的子级,而不限于固定的几层。 首先,我们需要...

Global site tag (gtag.js) - Google Analytics