Как я могу запустить событие, когда я щелкаю правой кнопкой по отделению в холсте с jQuery

ОБНОВЛЕНИЕ: Я обновил фрагмент кода для включения целой страницы, как найдено в 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.

5
задан Dan 24 June 2010 в 20:20
поделиться

2 ответа

Попробуйте это:

$(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 (кнопка правого клика).

Также вы отключаете стандартное поведение правой кнопки мыши, останавливая событие контекстного меню.

Дайте мне знать, если это сработает для вас.

6
ответ дан 14 December 2019 в 08:42
поделиться

Вы пробовали плагин jquery.rightClick? Похоже, что он работает, когда я проводил быстрый тест:

http://abeautifulsite.net/blog/2008/05/jquery-right-click-plugin/

$('.node').rightClick(function() {

    console.log('right click');

});

Похоже, что он довольно старый, но опять же, там не так много кода. Думаю, его нужно немного обновить, но не сильно.

1
ответ дан 14 December 2019 в 08:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: