我正在尝试使用jQuery定位一个自定义上下文菜单。
第一次它出现在正确的位置(鼠标坐标),但随后当前位置与新位置相加,因此菜单从屏幕上消失。
下面是JavaScript:
<script>
$(function(){
$('#box').hide();
$(document).bind("contextmenu", function(e) {
$("#box").offset({left:e.pageX, top:e.pageY});
$('#box').show();
e.preventDefault();
});
$(document).bind("click", function(e) {
$('#box').hide();
});
$('#box').bind("click", function(e) {
$('#box').hide();
});
});
</script>
4条答案
按热度按时间jmo0nnb31#
尝试位置:固定;上下文菜单的位置根据以下条件更改-
http://jsfiddle.net/AkshayBandivadekar/zakn7Lwb/14/
cunj1qz12#
不要使用
offset
方法,尝试使用css
,绝对定位上下文菜单:CSS:
http://jsfiddle.net/smxLk/
jum4pzuy3#
问题是,当你右键单击然后左键单击其他地方,然后再次右键单击,位置是不正确的。
问题的根源在于您在显示元素之前设置了偏移。如果元素被设置为
display:none
,然后它的偏移量被改变,这似乎会混淆jQuery。要解决这个问题,你需要在代码中切换
show
和offset
行:成为
Demo
和/或
Source
cgyqldqp4#
我用jquery写了这段代码来定位我的contextmenu
如果你想使用这个,你需要写这个css #context {position:固定;左:0; top:0; display:无;}