jquery怎么实现自定义右键菜单有刷新功能
成都创新互联公司于2013年成立,是专业互联网技术服务公司,拥有项目成都网站制作、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元城步做网站,已为上家服务,为城步各地企业和个人服务,联系电话:18980820575
在线演示地址如下:
具体代码如下:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
!DOCTYPE html
head
meta http-equiv="Content-Type" content="text/html; charset=utf-8" /
titlejQuery自定义区域的鼠标右键菜单/title
script src="jquery-1.6.2.min.js"/script
style type="text/css"
#mask{position: absolute;left: 0;top: 0;z-index: 9000;display: block;}
#myMenu{position: absolute;display: none;z-index: 9999;background: yellow;border: 1px solid;width: 200px;height: 155px;}
#textbox{background: orange;width: 380px;border: 2px solid;}
img{height: 30px;width: 30px;}
td{font-size: 20px;cursor: pointer;}
a{text-decoration: none;color: black;}
a: hover{color: white;background: black;}
/style
script type="text/javascript"
var windowwidth;
var windowheight;
var checkmenu;
$(window).ready(function() {
$('#myMenu').hide();
$('#textbox').bind("contextmenu",function(e){
windowwidth = $(window).width();
windowheight = $(window).height();
checkmenu = 1;
$('#mask').css({
'height': windowheight,
'width': windowwidth
});
$('#myMenu').show(500);
$('#myMenu').css({
'top':e.pageY+'px',
'left':e.pageX+'px'
});
return false;
});
$('#mask').click(function(){
$(this).height(0);
$(this).width(0);
$('#myMenu').hide(500);
checkmenu = 0;
return false;
});
$('#mask').bind("contextmenu",function(){
$(this).height(0);
$(this).width(0);
$('#myMenu').hide(500);
checkmenu = 0;
return false;
});
$(window).resize(function(){
if(checkmenu == 1) {
windowwidth = $(window).width();
windowheight = $(window).height();
$('#mask').css({
'height': windowheight,
'width': windowwidth,
});
}
});
});
/script
/head
body
div id="myMenu"
table cellspace="3"
tr
td img src="images/twitter.png" /tdtda href="#"tweet me/a/td
/tr
tr
td img src="images/facebook.png" /tdtda href="#"facebook share/a/td
/tr
tr
td img src="images/myspace.png" /tdtda href="#"myspace share/a/td
/tr
tr
td img src="images/mail.png" /tdtda href="#"e-mail this/a/td
/tr
/table
/div
div id="mask" /div
div id="textbox"
p嗨!您好,在这个区域内点击您的鼠标右键吧,会弹出一个自定义的右键菜单,和浏览器的右键菜单完全不一样哦!p/
/div
div
/body
/html
先来源码,把这一段存成文件,在要使用的页面里面导入于jquery基本库后。
------------
jQuery.fn.extend({
jsRightMenu: function(options) {
options = $.extend({
menuList: []
}, options);
return this.each(function() {
if ($("#div_RightMenu", $(this)).size() == 0) {
var menuCount = options.menuList.length;
if (menuCount 0) {
var divMenuList = "div id=\"div_RightMenu\" class=\"div_RightMenu\"";
for (var i = 0; i menuCount; i++) {
divMenuList += "div class=\"divMenuItem\" onclick=\"" + options.menuList[i].clickEvent + "\" onmouseover=\"" + options.menuList[i].mouseoverEvent + "\" onmouseout=\"" + options.menuList[i].mouseoutEvent + "\"" + options.menuList[i].menuName + "/div";
}
divMenuList += "/div";
$(this).append(divMenuList);
var objM = $(".divMenuItem");
$("#div_RightMenu").hide();
objM.bind("mouseover", function() {
this.style.backgroundColor = "#316ac5";
this.style.paddingLeft = "30px";
});
objM.bind("mouseout", function() {
this.style.backgroundColor = '#EAEAEA';
});
}
}
this.oncontextmenu = function() {
var objMenu = $("#div_RightMenu");
if (objMenu.size() 0) {
objMenu.hide();
var event = arguments[0] || window.event;
var clientX = event.clientX;
var clientY = event.clientY;
var redge = document.body.clientWidth - clientX;
var bedge = document.body.clientHeight - clientY;
var menu = objMenu.get(0);
var menuLeft = 0;
var menuTop = 0;
if (redge menu.offsetWidth)
menuLeft = document.body.scrollLeft + clientX - menu.offsetWidth;
else
menuLeft = document.body.scrollLeft + clientX;
if (bedge menu.offsetHeight)
menuTop = document.body.scrollTop + clientY - menu.offsetHeight;
else
menuTop = document.body.scrollTop + clientY;
objMenu.css({ top: menuTop + "px", left: menuLeft + "px" });
objMenu.show();
return false;
}
}
document.onclick = function() {
var objMenu = $("#div_RightMenu");
if (objMenu.size() 0) objMenu.hide();
}
});
}
});
-------------------------------------------------------
script src="" type="text/javascript"/script
script type="text/javascript" src="jquery.menu.js"/script
div id="divTest"右键菜单显示区域/div
script type="text/javascript"
$(function() {
$("#divTest" ).jsRightMenu({
menuList: [{ menuName: "右键菜单1", clickEvent: "divClick('1')"},
{ menuName: "右键菜单2", clickEvent: "divClick('2')"},
{ menuName: "右键菜单3", clickEvent: "divClick('3')"},
{ menuName: "右键菜单4", clickEvent: "divClick('4')"},
{ menuName: "右键菜单5", clickEvent: "divClick('5')"}
]
});
});
function divClick(id){
alert("你点了--右键菜单"+id);
}
/script
首先,实现“除此之外全部关闭”变灰不可用。
当只打开一个Tab选项卡时,右键菜单里“除此之外全部关闭”就应该变灰不可用,这样可以提示用户没有除这一个选项卡没有其他的选项卡了。程序实现很简单了,只要获得打开Tab选项卡的个数,如果个数为1,那么就把“除此之外全部关闭”变灰不可用就行了。
var
tabcount
=
$('#tabs').tabs('tabs').length;
//tab选项卡的个数
if
(tabcount
=
1)
{
$('#mm-tabcloseother').attr("disabled",
"disabled").css({
"cursor":
"default",
"opacity":
"0.4"
});
}
else
{
$('#mm-tabcloseother').removeAttr("disabled").css({
"cursor":
"pointer",
"opacity":
"1"
});
}
说明:在Firfox,Google,Opera浏览器里,“disabled”的属性不起作用,所以我加了一个CSS样式,设置了一下它的透明度使它变灰。
效果图:
图一:除此之外全部关闭
第二,实现“当前页右侧全部关闭”变灰不可用。
当一个Tab选项卡的右侧没有选项卡的时候,这个Tab选项卡就应该变灰不可用。程序实现也不难,只要获得最后一个Tab选项卡的标题和当前右键菜单所在的Tab选项卡的标题进行比较,如果一致,就把“当前页右侧全部关闭”变灰不可用。
var
tabs
=
$('#tabs').tabs('tabs');
//获得所有的Tab选项卡
var
tabcount
=
tabs.length;
//Tab选项卡的个数
var
lasttab
=
tabs[tabcount
-
1];
//获得最后一个Tab选项卡
var
lasttitle
=
lasttab.panel('options').tab.text();
//最后一个Tab选项卡的Title
var
currtab_title
=
$('#mm').data("currtab");
//当前Tab选项卡的Title
if
(lasttitle
==
currtab_title)
{
$('#mm-tabcloseright').attr("disabled",
"disabled").css({
"cursor":
"default",
"opacity":
"0.4"
});
}
else
{
$('#mm-tabcloseright').removeAttr("disabled").css({
"cursor":
"pointer",
"opacity":
"1"
});
}
效果图:
图二:当前页右侧全部关闭
第三,实现“当前页左侧全部关闭”变灰不可用。
这个跟第二个相反就行了,获得第一个Tab选项卡的标题和当前Tab选项卡的标题进行比较。
var
onetab
=
tabs[0];
//第一个Tab选项卡
var
onetitle
=
onetab.panel('options').tab.text();
//第一个Tab选项卡的Title
if
(onetitle
==
currtab_title)
{
$('#mm-tabcloseleft').attr("disabled",
"disabled").css({
"cursor":
"default",
"opacity":
"0.4"
});
}
else
{
$('#mm-tabcloseleft').removeAttr("disabled").css({
"cursor":
"pointer",
"opacity":
"1"
});
}
最后,实现的效果如下图
图三:当前页左侧全部关闭
上面实现了三种情况下的变灰不可用的效果,当鼠标放到上面点击,右键菜单就会消失,其实解决的办法很简单,希望这篇文章可以给大家带来启发。
1、contextMenu我们可以根据数据记录隐藏一些菜单项,这个可以在onShowMenu事件中,根据e.currentTarget触发源获取数据,再根据你需要改变原菜单项