針對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);
相關文章
- win10右鍵選單彈出方向怎麼自定義_win10如何自定義右鍵選單彈出方向Win10
- win10右健彈出很慢如何解決_win10右鍵選單彈出非常慢怎麼處理Win10
- 管理右鍵選單
- javascript右鍵選單JavaScript
- 自定義右鍵選單
- win10右鍵選單出現左邊如何恢復到右邊_win10右鍵選單在左邊怎麼改回右邊Win10
- Qt右鍵選單實現QT
- 沒有滑鼠Mac怎麼調出右鍵選單Mac
- windows11 始終右鍵選單顯示更多選項/右鍵選單返回舊版Windows
- 如何給頁面新增追加右鍵選單(原右鍵選單功能保持不變)
- 如何管理win10右鍵新建選單_win10如何清理右鍵新建選單Win10
- 新增右鍵選單: SourceTree 右鍵開啟當前目錄
- win10系統下滑鼠右鍵無法彈出選單沒反應如何處理Win10
- win10滑鼠右鍵選單欄怎麼改 刪除右鍵選單欄無用選項的方法Win10
- Windows如何新增右鍵新建選單Windows
- jq模仿右鍵觸發選單
- 自定義 Windows 右鍵選單項Windows
- 滑鼠右鍵選單欄東西太多怎麼辦 右鍵選單怎麼編輯調整
- 彈彈彈,彈走魚尾紋的彈出選單(vue)Vue
- win10桌面右鍵選單清理的方法_如何清理win10桌面右鍵選單Win10
- win11 恢復右鍵選單
- 手動新增git到 右鍵選單Git
- [msys2]整合到右鍵選單
- win11右鍵選單怎麼改回win10 win11右鍵選單改回win10的方法Win10
- Windows 11刪除右鍵選單的新建選單的bmp影像(Bitmap image)Windows
- win10怎麼去除桌面右鍵多餘選單命令_win10如何清理右鍵新建選單Win10
- win11使用傳統右鍵選單
- win11右鍵選單怎麼還原經典選單
- Windows10系統右鍵選單中的“radeon”選項的方法Windows
- Win11如何找回熟悉的開始選單、工作列和右鍵選單
- Windows登錄檔增加右鍵多級選單Windows
- C/C++ Qt 給ListWidget增加右鍵選單C++QT
- windows右鍵選單擴充套件容器[開源]Windows套件
- vscode外掛編寫體驗-右鍵選單VSCode
- win10右鍵選單下拉速度很慢怎麼辦_Win10右鍵選單下拉速度慢如何解決Win10
- win10右鍵skydrive pro選項怎麼刪除_win10右鍵選單中skydrive pro選項的刪除方法Win10
- win10怎麼在桌面右鍵選單新增關閉顯示器選項_win10右鍵選單新增關閉顯示器的教程Win10
- Windows 10右鍵選單新增“管理員取得所有權”Windows
- AM右鍵新易髮選單重建bat指令碼BAT指令碼