左侧:菜单,给每个菜单设置id和onclick点击事件,onclick事件触发的函数假设写为display()
右侧:写个固定样式的div,id假设设置为board。
如果你的菜单内容在服务器
display()的实现如下
function display(){
$.ajax({
type: "POST",
url: 菜单所请求的内容地址,
data: this.id等等相关的请求标志,
success: funtion(data){$('board').html(data)},//返回数据填充
dataType: dataType})
}
如果菜单内容写死在页面内
那么右侧:写和菜单数一样多的div,把所有的display属性设置为none
同时display()的实现如下
function display(){
$('#'+$(this).attr('rel')).style.display='block'
}
思路:
你需要先组织默认的右键事件,
你需要自己制作一个右键图层,
下面是简单的代码:
<style>* {margin:0 padding:0 list-style:none}
#ul1 li {width:400px background:#CCC border:1px solid black margin:10px float:left line-height:30px text-indent:1em}
#menu {width:150px border:1px solid black border:1px solid black position:absolute left:0 top:0 display:none background:white}
#menu li {padding:3px}
#menu li:hover {background:#CCC}
</style>
<script>
window.onload=function (){
var aLi=document.getElementById('ul1').children
var oMenu=document.getElementById('menu')
var aMenuLi=oMenu.children
for (var i=0 i<aLi.length i++)
{
aLi[i].oncontextmenu=function (ev){
var oEvent=ev || event
oMenu.style.display='block'
oMenu.style.left=oEvent.clientX+'px'
oMenu.style.top=oEvent.clientY+'px'
var _this=this
aMenuLi[0].onclick=function (){
_this.parentNode.removeChild(_this)
}
return false
}
}
document.onclick=function (){
oMenu.style.display='none'
}
}
</script>
</head>
<body>
<ul id="menu">
<li>删除</li>
<li>变成红色</li>
<li>变成绿色</li>
<li>变成黄色</li>
<li>变成蓝色</li>
</ul>
<ul id="ul1">
<li>中国信保原副总戴春宁贪污、受贿、通奸被开除党籍</li>
<li>中纪委原书记贺国强考察贵阳孔学堂(图)</li>
<li>解放军报官微:胡锡进相关微博内容是胡说八道</li>
<li>刘汉向湖北省高院提出上诉 已提交上诉状</li>
<li>澳洲公布疑似马航坠毁噪音 或解MH370失踪之谜</li>
<li>曝京沪高铁上海段地面开裂10cm 回应称不影响运营</li>
<li>朝鲜宣传一农场已建成“社会主义世外桃源”(图)</li>
</ul>
</body>
嘿嘿,看起来简单,做起来可不那么轻松哦,说下思路 ,这个div是在你点击右键的时候弹出来的,然后写一个鼠标右键事件 onmousedown="if(event.button == 2) {显示这个层},这个层的坐标与鼠标的坐标有关event.xevent.y剩下的就是div里面的内容了,因为只有选中才会√所以,在将你选中的物品的时候,将√放到数组里面,这样比如clos[0]名称 如果clos[0]里面放的√,效果是不就出来了?这样做的话不能达到一个效果,就是选中的值会变灰,那么就将所有内容一起动态加入到层里面,写个循环判断,如果clos[i]里面有值加一个样式,如果没值又一个样式。