jQuery只允许在某些元素上使用contextmenu

 //这个有效

 $(document).on('contextmenu',function(){
    返回虚假;
 });
 //没有上面的代码,这也有效

 $(document).on('contextmenu','#special',function(){
    警报('#special right clicked');
 }); 

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

$(document).on('contextmenu', function(e) { if (!$(e.target).is("#special")) return false; alert('#special right clicked'); // you may want e.preventDefault() here }); 

使用.is()方法可以测试被点击的元素是否与任何选择器匹配,这基本上是你原来委托的.on()调用在幕后进行的操作,但如果你正在检查一个元素id,那么它会更多高效地说:

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