jQuery permite el menú contextual solo en ciertos elementos

 // esto funciona

 $ (documento) .on ('contextmenu', function () {
     falso retorno;
 });
 // sin el código anterior, esto también funciona

 $ (document) .on ('contextmenu', '#special', function () {
     alerta ('# especial clic derecho');
 }); 

¿Cómo puedo combinar estas 2 piezas de código para poder deshabilitar el menú contextual en todo el documento, excepto el que tiene ID #special?

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

El uso del método .is() permite probar si el elemento en el que se hizo clic coincide con cualquier selector, que es básicamente lo que hizo su .on() delegada original .on() detrás de la escena, pero si está buscando un ID de elemento específicamente, sería más eficiente decir:

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