将jQuery侦听器应用于元素的子元素

时间:2016-07-29 00:41:59

标签: javascript jquery css

我有一个带有jQuery contextmenu监听器的按钮。

在Safari和Chrome中,当您右键单击该按钮时,背景会变为蓝色一秒钟,然后选中/突出显示按钮内的文本。

我该如何防止这种情况?

jQuery(".class1").contextmenu(function (e) {
    return false;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<button class="class1">Click Me</button>

2 个答案:

答案 0 :(得分:1)

如果问题是在按钮内选择文本,那么您可以将{{ form_label(form.type[0], null, {"label_attr":{"class":"myclasshere"}}) }} 类添加到按钮,您不需要使用js。但也许我错了。

noselect

.noselect {
  -webkit-touch-callout: none; /* iOS Safari */
  -webkit-user-select: none;   /* Chrome/Safari/Opera */
  -khtml-user-select: none;    /* Konqueror */
  -moz-user-select: none;      /* Firefox */
  -ms-user-select: none;       /* Internet Explorer/Edge */
  user-select: none;           /* Non-prefixed version, currently
                                  not supported by any browser */
}
.noselect {
  -webkit-touch-callout: none; /* iOS Safari */
  -webkit-user-select: none;   /* Chrome/Safari/Opera */
  -khtml-user-select: none;    /* Konqueror */
  -moz-user-select: none;      /* Firefox */
  -ms-user-select: none;       /* Internet Explorer/Edge */
  user-select: none;           /* Non-prefixed version, currently
                                  not supported by any browser */
}
/*maybe give it a static background .. */
button{
  background:yellow;
}
button:active{
  background:yellow!important;
}

答案 1 :(得分:0)

在评论中你提到你在Mac上,蓝色背景/边框可能是因为你使用CTRL + LMB点击。

按下CTRL时,这将取消按钮上的焦点:

jQuery(".class1").contextmenu(function(e) {
    return false;
}).keydown(function(e) {
  if (e.keyCode == 17) { //CTRL
    $(this).blur();
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<button class="class1">Click Me</button>