最近做一个web页面,需求中需要提供右键操作···
当然该右键操作就需要屏蔽浏览器默认的右键操作,一阵搜罗,整理如下(样式神马的就自己去定义吧)
<head> <title>RightKeyTestPage</title> <style> /*右键层*/ #rightKeyDiv { filter: alpha(opacity=80); /*IE滤镜,透明度80%*/ -moz-opacity: 0.8; /*Firefox私有,透明度80%*/ opacity: 0.8; /*其他,透明度80%*/ display: none; width: 200px; border: solid 1px black; background: #808080; cursor: pointer; } #rightKeyDiv ul { list-style-type: none; display: block; } #rightKeyDiv ul li { margin-left: -25px; } .fieldLine { width: 400px; } </style> <script src="scripts/jquery-1.8.2.js"></script> <script> //屏蔽默认右键 //整个document圈闭屏蔽默认右键 $(document).bind("contextmenu", function (oEvent) { if (!oEvent) oEvent = window.event; if (oEvent.button == 2) { if (document.all) window.event.returnValue = false;// for IE else event.preventDefault(); } }); //清除右键弹出层 //在自定义右键绑定元素之外的区域点击鼠标,隐藏弹出的右键菜单 $(document).bind("mouseup", function (event) { if ($(event.target).parent().attr("class") != "fieldLine") { $("#rightKeyDiv").hide(); } }); $(function () { //绑定自定义右键 //将右键操作绑定到input上(随你页面想绑定到哪) $(".fieldLine input").each(function () { bindRightKeyEvent(this) }); }); function bindRightKeyEvent(tar) { $(tar).live("mouseup", function (oEvent) { //tar.onmouseup = function (oEvent) { if (!oEvent) oEvent = window.event; //event.button=2是右键 貌似IE8以下不支持 if (oEvent.button == 2) { var h = oEvent.target.offsetTop //+ oEvent.target.offsetHeight; var w = oEvent.target.offsetLeft + oEvent.target.offsetWidth; var x = w;// oEvent.x; var y = h;//oEvent.y; $("#rightKeyDiv").css({ "position": "absolute", "top": y, "left": x, }).show(); //绑定右键div中按钮事件 //先解绑定在重新绑定 //避免上一右键点击元素 绑定的事件被触发 $("#rightKeyDiv").find("#up").unbind("click").bind("click", function () { return up(tar); }); $("#rightKeyDiv").find("#down").unbind("click").bind("click", function () { return down(tar); }); $("#rightKeyDiv").find("#del").unbind("click").bind("click", function () { return del(tar); }); $("#rightKeyDiv").find("#add").unbind("click").bind("click", function () { return add(tar); }); //if (document.all) window.event.returnValue = false;// for IE //else event.preventDefault(); } else { $("#rightKeyDiv").hide(); } }); } function up(obj) { var $pDiv = $(obj).parent(); if ($pDiv.prev(".fieldLine")) { $pDiv.insertBefore($pDiv.prev()) } } function down(obj) { var $pDiv = $(obj).parent(); if ($pDiv.next(".fieldLine")) { $pDiv.insertAfter($pDiv.next()) } } function del(obj) { var $pDiv = $(obj).parent(); if ($pDiv.attr("class") == "fieldLine") { $pDiv.remove(); } } function add(obj) { var $pDiv = $(obj).parent(); var $cloneDiv = $pDiv.clone(); $cloneDiv.insertAfter($pDiv); var tar = $cloneDiv.find("input")[0];//jQuery对象 转为dom对象 bindRightKeyEvent(tar);//为新增元素绑定右键事件 } </script> </head> <body> <div id="editArea"> <div class="fieldLine"> <span>1</span><input /> </div> <div class="fieldLine"> <span>2</span><input /> </div> <div class="fieldLine"> <span>3</span><input /> </div> </div> <div id="rightKeyDiv"> <ul> <li id="add">新增</li> <li id="update">修改</li> <li id="del">删除</li> <li> 移动 <ul> <li id="up">上移</li> <li id="down">下移</li> </ul> </li> </ul> </div> </body>