/动态生成tr/
for ( var j in dirs) {
var shareDirid = dirs[j].id + ":dir";
qq += "<tr oncontextmenu='operateList(event,this)'></tr>"
}
/右键菜单/
function operateList(event,obj){
window.event.returnValue=false;
var top=0,left=0;
var btnNum = event.button;
$(obj).addClass('a');
$(obj).siblings().each(function(i,ele){
if(ele.className.indexOf('a')!=-1){
$(ele).removeClass('a');
}
});
$(obj).find('input[type="checkbox"]').prop('checked',true);
$(obj).siblings().find('input[type="checkbox"]').prop('checked',false);
var $opereteList=$('#operateList')[0];
var $fileTable=$('#fileTable')[0];
$opereteList.style.display='block';
var eTop=event.clientY;
var eLeft=event.clientX;
var oHeight=$opereteList.offsetHeight;
var oWidth=$opereteList.offsetWidth;
var tTop=0;
var tLeft=0;
var h=$fileTable.offsetHeight;
var w=$fileTable.offsetWidth;
while($fileTable.offsetParent!=null){
tTop +=$fileTable.offsetTop;
tLeft +=$fileTable.offsetLeft;
$fileTable=$fileTable.offsetParent;
}
var tHeight=tTop+h;
var tWidth=tLeft+w;
if(eTop+oHeight<=tHeight){
top=eTop-15;
}else{
top=eTop-(eTop+oHeight-tHeight);
}
if(eLeft+oWidth<=tWidth){
left=eLeft;
}else{
left=eLeft-(eLeft+oWidth-tWidth);
}
$opereteList.style.top=top+'px';
$opereteList.style.left=left+'px';
//判断当前是否为文件还是为文件夹
var value=0;
value=$(obj).find('input[type="hidden"]').attr('value');
if(value==1){
$('#share').show();
$('#download').show();
$('#close').show();
$('#tags').show();
$('#exchange').show();
$('#copy').show();
$('#edit').show();
$('#erase').hide();
$('#square').hide();
$('#cloud').hide();
$('#upload').hide();
}else if(value==0){
$('#share').show();
$('#download').show();
$('#close').show();
$('#tags').show();
$('#exchange').show();
$('#copy').show();
$('#edit').hide();
$('#erase').show();
$('#square').show();
$('#cloud').show();
$('#upload').show();
}
clearEventBubble(event);
return false;
}
谷歌和ie都能正常显示 火狐就显示默认的右键菜单
oncontextmenu 事件在元素中用户右击鼠标时触发并打开上下文菜单。
注意:所有浏览器都支持 oncontextmenu 事件, contextmenu 元素只有 Firefox 浏览器支持。
http://www.runoob.com/jsref/e...