右键单击添加/删除类

时间:2014-05-20 05:41:28

标签: javascript jquery

我尝试在右键单击元素时添加一个类,然后在单击页面上的任何其他内容时将其删除。

我正在使用jQuery。

我的功能到目前为止:

$(".classElement").live('mousedown', function(e) { 
   if( (e.which == 3) ) {
     $(".classElement").addClass("active");
   }
   e.preventDefault();
}).live('contextmenu', function(e){
 e.preventDefault();
});

然而,这增加了"活跃"全班同学#34; .classElement"在文档中,而不是单击的个人。我想只将类添加到被单击的元素中。

另外,如何在点击其他内容时删除该课程?

4 个答案:

答案 0 :(得分:1)

您可以在单击body元素时激活removClass,但为此,您必须在单击当前元素时停止事件传播。

$(document).on('mousedown','.classElement', function(e) { 
  e.preventDefault();
  if( (e.which == 3) ) {
    $(this).addClass("active");
  }
  e.stopPropagation();
}).on('contextmenu','.classElement', function(e){
  e.preventDefault();
});
$(document.body).click(function(){
  $(".classElement").removeClass("active");
});

答案 1 :(得分:0)

您可以使用$(this)定位当前点击的元素,以便执行以下操作:

$(this).addClass("active");

而不是:

$(".classElement").addClass("active");

此外,由于自版本.live()后删除1.9,您应该使用.on()代替。

答案 2 :(得分:0)

定位特定元素:

$(this).addClass("active");

并在点击任何其他内容时将其删除,请添加以下内容:

$(window).one("click", function(){
   $(this).removeClass("active");
});

这会向窗口添加一次性单击事件侦听器。

答案 3 :(得分:0)

使用此代码

$(".classElement").live('contextmenu', function(e){ e.preventDefault(); if( (e.which == 3) ) { $(this).addClass("active"); } });  然后删除文档上的类单击

$(document).click(function(){ $(".classElement").removeClass("active"); });