ОБНОВЛЕНИЕ: Я обновил фрагмент кода для включения целой страницы, как найдено в Firebug.
У меня есть следующий код:
Welcome to CodeIgniter
0.0
2.0
2.1
2.2
2.3
1.0
1.1
5.0
5.1
HELLO WORLD!
Я хочу смочь щелкнуть правой кнопкой по одному из отделений с классом "узла" и затем запустить событие. Существует ли способ сделать это с jQuery? Я посмотрел на контекстное меню плагин jQuery, найденный по http://www.javascripttoolbox.com/lib/contextmenu/. Однако, если я использую $ ('узел') .contextMenu (...) он не работает. Если я использую $ ('infovis') .contextMenu (...) работы контекстного меню.
Похоже, что эти отделения на самом деле вне холста. Я выпрямил этот код от Firebug.
Попробуйте это:
$(document).ready(function(){
$(document)[0].oncontextmenu = function() {return false;}
$("#infovis").delegate('.node','mousedown',function(e){
if( e.button == 2 ) {
e.stopPropagation()
alert('Right mouse button!');
return false;
} else {
return true;
}
});
});
Я предполагаю, что #infovis виден с самого начала, и вы используете javascript для заполнения этого div'а div'ами .node. Таким образом, вы хотите использовать делегирование событий, поэтому вы привязываетесь не к каждому узлу, а к родительскому узлу. Это сделает ваш код быстрее, даже если у вас 1000 .node. Кроме того, вам не нужно помещать привязку в обратный вызов.
Мы делегируем mousedown и перехватываем событие, если button == 2 (кнопка правого клика).
Также вы отключаете стандартное поведение правой кнопки мыши, останавливая событие контекстного меню.
Дайте мне знать, если это сработает для вас.
Вы пробовали плагин jquery.rightClick? Похоже, что он работает, когда я проводил быстрый тест:
http://abeautifulsite.net/blog/2008/05/jquery-right-click-plugin/
$('.node').rightClick(function() {
console.log('right click');
});
Похоже, что он довольно старый, но опять же, там не так много кода. Думаю, его нужно немного обновить, но не сильно.