針對Ztree的右鍵彈出選單(jquery.popupSmallMenu.js)
例子效果:
[img]http://dl2.iteye.com/upload/attachment/0100/1733/f1f93106-d46d-3aaa-825d-f7ab4570724e.png[/img]
右鍵選單方便好用的有很多,長用的為jquery contextMenu.
官網: http://www.trendskitchens.co.nz/jquery/contextmenu/
用法: $("table td").contextMenu("myMenu")
問題: 可以看出右鍵選單需要制定一個繫結的物件(table td), 但zTree要繫結事件,還需要獲得每個節點的li,不是很好,它本身提供右鍵事件和右鍵選單(不是很好看), 所以我們可以在右鍵事件位置下手, 自己仿照jquery ContextMenu.js 寫一個外掛([b]jquery.popupSmallMenu.js[/b]):
在ztree觸發右鍵事件時,彈出選單:
1.使用:
ztree 右鍵事件:
callback: {
onRightClick:OnRightClick
}
function OnRightClick(event, treeId, treeNode) {
ztree.selectNode(treeNode);
if(treeNode) {
//彈出選單
$("#menu").popupSmallMenu({
event : event,
onClickItem : function(item) {
chuli(treeNode,item);
}
});
}
}
Html:
<ul id="menu" class="small-menu">
<li class="edit"><a href="#">編輯</a></li>
<li class="cut"><a href="#">新增</a></li>
<li class="copy"><a href="#">刪除</a></li>
<li class="small-menu-separator"></li>
<li class="delete"><a href="#"><span class="icon icon-edit"></span>Zoom Out</a></li>
</ul>
CSS 樣式 仿照jquery ContextMenu:
[img]http://dl2.iteye.com/upload/attachment/0100/1733/f1f93106-d46d-3aaa-825d-f7ab4570724e.png[/img]
右鍵選單方便好用的有很多,長用的為jquery contextMenu.
官網: http://www.trendskitchens.co.nz/jquery/contextmenu/
用法: $("table td").contextMenu("myMenu")
問題: 可以看出右鍵選單需要制定一個繫結的物件(table td), 但zTree要繫結事件,還需要獲得每個節點的li,不是很好,它本身提供右鍵事件和右鍵選單(不是很好看), 所以我們可以在右鍵事件位置下手, 自己仿照jquery ContextMenu.js 寫一個外掛([b]jquery.popupSmallMenu.js[/b]):
在ztree觸發右鍵事件時,彈出選單:
1.使用:
ztree 右鍵事件:
callback: {
onRightClick:OnRightClick
}
function OnRightClick(event, treeId, treeNode) {
ztree.selectNode(treeNode);
if(treeNode) {
//彈出選單
$("#menu").popupSmallMenu({
event : event,
onClickItem : function(item) {
chuli(treeNode,item);
}
});
}
}
Html:
<ul id="menu" class="small-menu">
<li class="edit"><a href="#">編輯</a></li>
<li class="cut"><a href="#">新增</a></li>
<li class="copy"><a href="#">刪除</a></li>
<li class="small-menu-separator"></li>
<li class="delete"><a href="#"><span class="icon icon-edit"></span>Zoom Out</a></li>
</ul>
CSS 樣式 仿照jquery ContextMenu:
.small-menu {
position: absolute;
width: 120px;
z-index: 99999;
border: solid 1px #CCC;
background: #EEE;
padding: 0px;
margin: 0px;
display: none;
}
.small-menu li {
list-style: none;
padding: 0px;
margin: 0px;
}
.small-menu li A {
color: #333;
text-decoration: none;
display: block;
line-height: 20px;
height: 20px;
background-position: 6px center;
background-repeat: no-repeat;
outline: none;
padding: 1px 5px;
padding-left: 28px;
}
.small-menu li a:hover {
color: #FFF;
background-color: #3399FF;
}
.small-menu-separator {
padding-bottom:0;
border-bottom: 1px solid #DDD;
}
.small-menu LI.edit A { background-image: url(images/page_white_edit.png); }
.small-menu LI.cut A { background-image: url(images/cut.png); }
.small-menu LI.copy A { background-image: url(images/page_white_copy.png); }
.small-menu LI.paste A { background-image: url(images/page_white_paste.png); }
.small-menu LI.delete A { background-image: url(images/page_white_delete.png); }
.small-menu LI.quit A { background-image: url(images/door.png); }
/**
* @description
* small popup menu.
* @deprecated
* JQuery.js
* @author Malt
* @version 1.0
* Date: 2013-05-22
*/
(function($,undefined){
$.fn.popupSmallMenu = function(options) {
var $currMenu = $(this),
defaultOptions = {
event : null,
onClickItem : null
},
options = $.extend(defaultOptions,options);
var _smallMenu = {
popupSmallMenu : function() {
this._bindItemClick();
this._bindMenuEvent();
this._showMenu();
return $currMenu;
},
_bindMenuEvent : function() {
var thiz = this;
$currMenu.hover(function(){
},function(){
thiz._unBindItemClick();
$currMenu.hide();
});
$currMenu.click(function(){
thiz._unBindItemClick();
$currMenu.hide();
});
},
_showMenu : function() {
if(!options.event) {
alert('請傳入滑鼠事件');
}
$currMenu.css({
top:options.event.clientY+"px",
left:options.event.clientX+"px",
display:"block"
});
},
_bindItemClick : function() {
$currMenu.find('li').each(function(index,obj){
var $li = $(obj);
var itemIden = $li.attr('class');
$li.bind('click',function(event){
event.stopPropagation();
if(options.onClickItem
&& typeof options.onClickItem === 'function') {
options.onClickItem(itemIden);
}
});
});
}
,
_unBindItemClick : function(){
$currMenu.find('li').each(function(index,obj){
$(obj).unbind();
});
}
};
return _smallMenu.popupSmallMenu();
}
})(jQuery);
相關文章
- 使用 zTree 右鍵選單功能的總結
- js如何防止自帶右鍵選單的彈出JS
- win10右鍵選單彈出方向怎麼自定義_win10如何自定義右鍵選單彈出方向Win10
- 具有彈性效果的右鍵導航選單
- 左鍵彈出選單
- 絕對精彩:在網頁裡做類似window右鍵的彈出式選單 (轉)網頁
- win10右健彈出很慢如何解決_win10右鍵選單彈出非常慢怎麼處理Win10
- 管理右鍵選單
- Qt:QT右鍵選單QT
- 自定義右鍵選單
- ArcGIS API for Silverlight開發中滑鼠左鍵點選地圖上的點彈出視窗及右鍵點選彈出快捷選單的實現程式碼API地圖
- 右鍵模擬windows選單Windows
- win10右鍵選單出現左邊如何恢復到右邊_win10右鍵選單在左邊怎麼改回右邊Win10
- win10桌面右鍵選單清理的方法_如何清理win10桌面右鍵選單Win10
- 右鍵選單中的文字文件新增快捷鍵
- 沒有滑鼠Mac怎麼調出右鍵選單Mac
- 在C#中單擊右鍵新增引用時彈出錯誤提示對話方塊C#
- Win8下滑鼠右鍵單擊桌面彈出選單中沒有個性化選項怎麼辦
- 自定義 IE 滑鼠右鍵彈出式 (轉)
- JCEF 如何修改右鍵選單項(JCEF在右鍵選單中新增開發者選項-show dev tools)dev
- 新增右鍵選單: SourceTree 右鍵開啟當前目錄
- 如何管理win10右鍵新建選單_win10如何清理右鍵新建選單Win10
- win10系統下滑鼠右鍵無法彈出選單沒反應如何處理Win10
- ztree樹形選單demo
- win10滑鼠右鍵選單欄怎麼改 刪除右鍵選單欄無用選項的方法Win10
- 自定義 Windows 右鍵選單項Windows
- jq模仿右鍵觸發選單
- Notepad++ 右鍵選單
- js 做網頁右鍵選單JS網頁
- Eclipse mars右鍵New選單項的…Eclipse
- WAD遮蔽右鍵部分選單的命令
- 彈彈彈,彈走魚尾紋的彈出選單(vue)Vue
- 滑鼠右鍵選單欄東西太多怎麼辦 右鍵選單怎麼編輯調整
- Win10檔案右鍵選單清理教程 Win10右鍵選單怎麼刪除?Win10
- Windows如何新增右鍵新建選單Windows
- [msys2]整合到右鍵選單
- 手動新增git到 右鍵選單Git
- JavaScript自定義右鍵選單詳解JavaScript