jQuery實(shí)現(xiàn)自定義右鍵菜單的樹狀菜單效果
本文實(shí)例講述了jQuery實(shí)現(xiàn)自定義右鍵菜單的樹狀菜單效果。分享給大家供大家參考。具體如下:
這是一款基于jQuery的自定義右鍵菜單,在樹狀結(jié)構(gòu)的子節(jié)點(diǎn)(下級(jí)沒(méi)有節(jié)點(diǎn))上單擊右鍵才會(huì)彈出自定義菜單,而且菜單是自動(dòng)根據(jù)鼠標(biāo)位置來(lái)定位的。當(dāng)鼠標(biāo)在菜單以外的任意空白處單擊一下后會(huì)自動(dòng)消失。這里想特別說(shuō)明一點(diǎn)所謂的“菜單以外”,可以有兩種解剖方式——1、除了鼠標(biāo)在菜單區(qū)域內(nèi)的所有位置;2、如下圖所示的A、B、C、D四個(gè)區(qū)域。顯然用第一種方法來(lái)剖析會(huì)更簡(jiǎn)單直接一點(diǎn)。源碼中的!IsInArea就表示此方法。
運(yùn)行效果截圖如下:
在線演示地址如下:
http://demo.jb51.net/js/2015/jquery-zdy-right-button-menu-style-codes/
具體代碼如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>jQuery自定義右鍵菜單</title> <style type="text/css"> body { font-size: 12px; margin: 0px; padding: 0px; } form,div,ul,li { margin: 0px; padding: 0px; list-style-type: none; overflow: hidden; } h1,h2,h3,h4,h5 { font-size: 12px; margin: 0px; padding: 0px; } a { text-decoration: none; } .layout { width: 993px; clear: both; margin-right: auto; margin-left: auto; border-top-width: 0px; border-right-width: 4px; border-bottom-width: 0px; border-left-width: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow: hidden; } .layout2 { width: 942px; margin-right: auto; margin-left: auto; } .Content { background-color: #376285; } .contentBg { background-color: #173043; } div, ul, li { margin: 0px; padding: 0px; list-style-type: none; } body { background-color: #FFFFFF; font-size: 12px; margin: 0px; padding: 0px; } #TreeList { background-color: #FFFFFF; margin-top: 6px; margin-right: 9px; margin-bottom: 6px; margin-left: 9px; border: 1px solid #5d7b96; padding-bottom: 6px; padding-left: 6px; } #TreeList .mouseOver { background-color: #FAF3E2; } #TreeList .ParentNode { line-height: 21px; height: 21px; margin-top: 2px; clear: both; } #TreeList .ChildNode { background-image: url(images/Sys_ModuleIcos.png); background-position: 15px -58px; padding-left: 39px; line-height: 21px; background-repeat: no-repeat; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 1px; border-left-width: 0px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: #aabdce; border-right-color: #aabdce; border-bottom-color: #aabdce; border-left-color: #aabdce; cursor: default; clear: both; height: 21px; color: #314f6a; } #TreeList .title { float: left; } #TreeList .input { font-size: 12px; line-height: 18px; color: #FFF; height: 16px; background-color: #3F6B8F; width: 120px; text-align: center; margin-top: 1px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #1F3547; border-right-color: #FFF; border-bottom-color: #FFF; border-left-color: #1F3547; float: left; } #TreeList .editBT { float: left; overflow: visible; } #TreeList .editBT .ok { background-image: url(images/Sys_ModuleIcos.png); background-repeat: no-repeat; background-position: 0px -89px; height: 13px; width: 12px; float: left; margin-left: 3px; padding: 0px; margin-top: 3px; cursor: pointer; } #TreeList .editBT .cannel { background-image: url(images/Sys_ModuleIcos.png); background-repeat: no-repeat; background-position: 0px -120px; float: left; height: 13px; width: 12px; margin-left: 3px; padding: 0px; margin-top: 3px; cursor: pointer; } #TreeList .editArea { float: right; color: #C3C3C3; cursor: pointer; margin-right: 6px; } #TreeList .editArea span { margin: 2px; } #TreeList .editArea .mouseOver { color: #BD4B00; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #C9925A; border-right-color: #E6CFBB; border-bottom-color: #E6CFBB; border-left-color: #C9925A; background-color: #FFFFFF; margin: 0px; padding: 1px; } #TreeList .ParentNode .title { color: #314f6a; cursor: pointer; background-image: url(images/Sys_ModuleIcos.png); background-repeat: no-repeat; padding-left: 39px; } #TreeList .ParentNode.show .title { font-weight: bold; background-position: 3px -27px; } #TreeList .ParentNode.hidden .title { background-position: 3px 4px; } #TreeList .ParentNode .editArea { color: #999; } #TreeList .ParentNode.show { background-color: #d1dfeb; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #5d7b96; border-right-color: #5d7b96; border-bottom-color: #5d7b96; border-left-color: #5d7b96; } #TreeList .ParentNode.hidden { border-top-width: 0px; border-right-width: 0px; border-bottom-width: 1px; border-left-width: 0px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: #aabdce; border-right-color: #aabdce; border-bottom-color: #aabdce; border-left-color: #aabdce; } #TreeList .Row { clear: both; margin-left: 24px; background-image: url(images/Sys_ModuleIcos2.png); background-repeat: repeat-y; background-position: 7px 0px; } h1 { font-size: 12px; line-height: 24px; color: #FFF; background-color: #396384; text-align: center; margin: 0px; padding: 0px; } #OpLimits_Menu { position: absolute; width: 70px; cursor: default; filter: Alpha(Opacity=90); } #OpLimits_Menu ul { background-color: #d5effc; border: 1px solid #3e8dad; } #OpLimits_Menu ul li { line-height: 18px; color: #496D81; text-align: center; letter-spacing: 0.3em; height: 18px; cursor: pointer; } #OpLimits_Menu ul .onmouse { background-image: url(images/bt1.gif); background-repeat: repeat-x; color: #324A58; } </style> <script type="text/javascript" src="jquery-1.6.2.min.js"></script> <script type="text/javascript"> var Mouse_X,Mouse_Y; var TMenu_X0,TMenu_Y0; var MousePostion; $(document).ready(function(e) { var PrentNodeClass = 'ParentNode';//父節(jié)點(diǎn)的標(biāo)識(shí) var ChildNodeClass = 'ChildNode';//沒(méi)有下級(jí)子節(jié)點(diǎn)的標(biāo)識(shí) var ChildrenListClass = 'Row';//子節(jié)點(diǎn)被包著的外層樣式 var TModuleNode,TChildNode,TModuleNodeName; TModuleNode = $('#TreeList .'+PrentNodeClass);//頂層節(jié)點(diǎn) TChildNode = $('.'+ChildNodeClass); TModuleNodeName = $('#TreeList .' + PrentNodeClass + ' .title');//頂層節(jié)點(diǎn)名稱 function TNode_MouseDown(e,Obj){ if(e.which==3){ if(Obj.hasClass(ChildNodeClass)){//沒(méi)有子節(jié)點(diǎn)才需要有權(quán)限設(shè)置菜單 MousePostion(e,1); with($('#OpLimits_Menu')){ css('left',Mouse_X); css('top',Mouse_Y); css('display','block'); } } } } //-------------禁用系統(tǒng)的右鍵功能----------- $(document).bind('contextmenu',function(e){ return false; }); var LimitsMenu_Width,LimitsMenu_Height; LimitsMenu_Width = $('#OpLimits_Menu').width(); LimitsMenu_Height = $('#OpLimits_Menu').height(); var LimitsSetting_Width,LimitsSetting_Height; LimitsSetting_Width = $('#OpLimitsSetting').width(); LimitsSetting_Height = $('#OpLimitsSetting').height(); TChildNode.mousedown(function(e){ TNode_MouseDown(e,$(this)); }); $(this).mousedown(function(e){ if(Mouse_X && Mouse_Y){ MousePostion(e,0); var IsInArea = Mouse_X>TMenu_X0 && Mouse_X<TMenu_X0+LimitsMenu_Width && Mouse_Y>TMenu_Y0 && Mouse_Y<TMenu_Y0+LimitsMenu_Height; if(e.which==1 && !IsInArea){ with($('#OpLimits_Menu')){ css('display','none'); } } } }); //----------------------------------------- //計(jì)算坐標(biāo)函數(shù) MousePostion = function(e,tag){ mouse = new MouseEvent(e); Mouse_X = mouse.x; Mouse_Y = mouse.y; if(tag==1){ TMenu_X0 = Mouse_X; TMenu_Y0 = Mouse_Y; } } //獲取鼠標(biāo)坐標(biāo)函數(shù) var MouseEvent = function(e) { this.x = e.pageX this.y = e.pageY } //---------------------------------------- with($('#OpLimits_Menu li')){ mouseover(function(){ $(this).addClass('onmouse'); }); mouseout(function(){ $(this).removeClass('onmouse'); }); click(function(){ with($('#OpLimits_Menu')){ css('display','none'); } }); } }); </script> </head> <body> <div id="TreeList"> <div class="ParentNode show"> <div class="title">酷站欣賞</div> </div> <div class="Row"> <div class="ChildNode"> <div class="title">歐美酷站</div> </div> <div class="ChildNode"> <div class="title">日韓酷站</div> </div> <div class="ChildNode"> <div class="title">國(guó)內(nèi)酷站</div> </div> <div class="ChildNode"> <div class="title">婚慶攝影</div> </div> <div class="ChildNode"> <div class="title">餐飲食品</div> </div> </div> </div> <div id="OpLimits_Menu" style="display:none"> <h1>權(quán)限設(shè)置</h1> <ul> <li value="1">查看</li> <li value="2">添加</li> <li value="3">修改</li> <li value="4">刪除</li> </ul> </div> </body> </html>
希望本文所述對(duì)大家的jquery程序設(shè)計(jì)有所幫助。
- JQuery 動(dòng)態(tài)生成Table表格實(shí)例代碼
- jQuery動(dòng)態(tài)生成Bootstrap表格
- JQuery Ajax動(dòng)態(tài)生成Table表格
- Jquery 動(dòng)態(tài)生成表格示例代碼
- jquery創(chuàng)建表格(自動(dòng)增加表格)代碼分享
- 基于jquery的動(dòng)態(tài)創(chuàng)建表格的插件
- JQuery右鍵菜單插件ContextMenu使用指南
- jQuery右鍵菜單contextMenu使用實(shí)例
- jquery實(shí)現(xiàn)在網(wǎng)頁(yè)指定區(qū)域顯示自定義右鍵菜單效果
- jquery實(shí)現(xiàn)右鍵菜單插件
- jQuery實(shí)現(xiàn)右鍵菜單、遮罩等效果代碼
- jQuery動(dòng)態(tài)生成表格及右鍵菜單功能示例
相關(guān)文章
解決攔截器對(duì)ajax請(qǐng)求的攔截實(shí)例詳解
這篇文章主要介紹了解決攔截器對(duì)ajax請(qǐng)求的攔截實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2016-12-12基于jquery異步傳輸json數(shù)據(jù)格式實(shí)例代碼
這篇文章主要介紹了jquery異步傳輸json數(shù)據(jù)格式實(shí)例代碼,有需要的朋友可以參考一下2013-11-11JQuery使用屬性addClass、removeClass和toggleClass實(shí)現(xiàn)增加和刪除類操作示例
這篇文章主要介紹了JQuery使用屬性addClass、removeClass和toggleClass實(shí)現(xiàn)增加和刪除類操作,涉及jquery事件響應(yīng)及頁(yè)面元素屬性動(dòng)態(tài)操作相關(guān)使用技巧,需要的朋友可以參考下2019-11-11用JQuery 判斷某個(gè)屬性是否存在hasAttr的解決方法
本篇文章介紹了,用JQuery 判斷某個(gè)屬性是否存在hasAttr的解決方法。需要的朋友參考下2013-04-04JQuery中屬性過(guò)濾選擇器用法實(shí)例分析
這篇文章主要介紹了JQuery中屬性過(guò)濾選擇器用法,實(shí)例分析了jQuery屬性過(guò)濾選擇器的相關(guān)使用技巧,需要的朋友可以參考下2015-05-05jquery多選項(xiàng)卡效果實(shí)例代碼(附效果圖)
這個(gè)選項(xiàng)卡不是一個(gè)單獨(dú)的選項(xiàng)卡,而是多個(gè)選項(xiàng)卡,每個(gè)選項(xiàng)卡里面有多個(gè)選項(xiàng),而且選項(xiàng)的個(gè)數(shù)也不一樣。廢話不多說(shuō),直接上jquery代碼。2013-03-03jQuery插件HighCharts繪制2D圓環(huán)圖效果示例【附demo源碼下載】
這篇文章主要介紹了jQuery插件HighCharts繪制2D圓環(huán)圖效果,結(jié)合實(shí)例形式分析了jQuery使用HighCharts插件繪制圓環(huán)圖的實(shí)現(xiàn)步驟與相關(guān)操作技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-03-03jQuery 1.9.1源碼分析系列(十四)之常用jQuery工具
這篇文章主要介紹了jQuery 1.9.1源碼分析系列(十四)之常用jQuery工具的相關(guān)資料,需要的朋友可以參考下2015-12-12easyui簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了easyui簡(jiǎn)介,詳細(xì)的介紹了什么是easyui和easyui的用法,有興趣的可以了解一下2017-07-07