【问题标题】:jQuery allow contextmenu only on certain elementsjQuery 只允许在某些元素上使用上下文菜单
【发布时间】:2012-11-21 17:15:39
【问题描述】:
// 这行得通 $(document).on('contextmenu', function() { 返回假; }); // 如果没有上面的代码,这也可以 $(document).on('contextmenu', '#special', function() { alert('#特殊右键'); });

我如何结合这两段代码,以便我可以禁用整个文档上的上下文菜单,除了 ID 为 #special 的那个。

【问题讨论】:

  • 您的第二个代码应该禁用所有其他代码,除了 id#special....
  • 不,第二个代码只对#special 发出警报。如果出现第一个代码,它会覆盖第二个代码。

标签: jquery contextmenu


【解决方案1】:
$(document).on('contextmenu', function(e) {
    if (!$(e.target).is("#special"))
       return false;

    alert('#special right clicked');
    // you may want e.preventDefault() here
});

使用.is() method 可以让您测试点击的元素是否与任何选择器匹配,这基本上是您最初委托的.on() 调用在幕后所做的,但如果您要专门检查元素ID,它会更多有效率的说:

if (e.target.id != "special")
    return false;

【讨论】:

  • 啊哈......这很容易......我期待一些上下文菜单插件的答案。谢谢。 (还有 5 分钟接受答案)
  • @user1643156 - 我希望您意识到某些浏览器 (Chrome/Firefox) 的设置不允许您使用 javascript 阻止右键单击菜单,因此这不适用于所有浏览器。
  • @jfriend00 感谢您的提醒。我刚刚在 Chrome 23 和 Firefox 3.6 & 15 上进行了测试,到目前为止它们都可以正常工作。
  • 在 FF 中有一个设置选项/内容/高级 JavaScript 选项下的上下文菜单。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-23
  • 2011-01-29
  • 1970-01-01
相关资源
最近更新 更多