2011-03-31 68 views
0


我与右键点击文本菜单删除与右鼠标点击一个div(块文本菜单)

我尝试删除一个div

$(".global_class").live('mousedown', function(e) 
{ 
    if((e.which == 3)) 
    { 
     // $('#'+this.id+'').remove(); 
     del_function(this.id); 
    } 
    e.preventDefault(); 
}).live('contextmenu', function(e){ e.preventDefault(); }); 

此代码的工作,但问题一个问题是$('#'+this.id+'').remove();

jquery删除div和生活$(".global_class").live('mousedown', function(e)没有开始(结果 - >上下文菜单不会被阻止)。

希望有人能帮助我。

在此先感谢!
彼得

回答

1

当你删除参与事件的元素,导致起泡的条款和违约和这样变得有点疯狂的(即使没有jQuery的live参与)。你可以这样做:

$(".global_class").live('mousedown', function(e) 
{ 
    var id = this.id; 

    if((e.which == 3)) 
    { 
     setTimeout(function() { 
      del_function(id); 
     }, 0); 
    } 
    e.preventDefault(); 
}).live('contextmenu', function(e){ e.preventDefault(); }); 

...所以您删除div后,立即事件完成,而不是在事件过程中。


题外话,但你不能取消所有的浏览器(歌剧想到的),你可能要因素纳入你的UI决定contextmenu事件......

+0

谢谢,作品!
@离题,你确定吗?它适用于我的Opera 10浏览器? – Peter 2011-03-31 09:20:26

+0

@彼得:哦,很好。我听说他们正在考虑允许(我确信Opera 9没有)。刚刚检查了我的副本,这是一个首选项设置,所以它可能不可靠(虽然我无法想象很多人会改变它)。 – 2011-03-31 10:13:36

相关问题