Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.03.2015, 21:44
Новичок на форуме
Отправить личное сообщение для Rabbit13245 Посмотреть профиль Найти все сообщения от Rabbit13245
 
Регистрация: 30.03.2015
Сообщений: 2

Вместо контексного меню на картинках вывести свое
Добрый вечер. На сайте надо на все изображения (например, с классом .images) запретить вывод контексного меню, и вывести свой текст.

Помогите пожалуйста.
Ответить с цитированием
  #2 (permalink)  
Старый 30.03.2015, 21:46
Новичок на форуме
Отправить личное сообщение для Rabbit13245 Посмотреть профиль Найти все сообщения от Rabbit13245
 
Регистрация: 30.03.2015
Сообщений: 2

Нашел готовое,
// Вешаем слушатель события нажатие кнопок мыши для всего документа:     
    jQuery('.images').mousedown(function(event) {                  
    // Убираем css класс selected-html-element у абсолютно всех элементов на странице с помощью селектора "*":         
    jQuery('*').removeClass('selected-html-element');         
    // Удаляем предыдущие вызванное контекстное меню:         
    jQuery('.context-menu').remove();                  
    // Проверяем нажата ли именно правая кнопка мыши:         
    if (event.which === 3)  {                          
    // Получаем элемент на котором был совершен клик:             
    var target = $(event.target);                          
    // Добавляем класс selected-html-element что бы наглядно показать на чем именно мы кликнули (исключительно для тестирования):             
    target.addClass('selected-html-element');              
    // Создаем меню:             
    jQuery('<div/>', {                 
    class: 'context-menu' 
    // Присваиваем блоку наш css класс контекстного меню:             
    })             
    .css({                 
    left: event.pageX+'px', 
    // Задаем позицию меню на X                 
    top: event.pageY+'px' 
    // Задаем позицию меню по Y             
    })             
    .appendTo('body') // Присоединяем наше меню к body документа:             
    .append( // Добавляем пункты меню:                  
    jQuery('<ul/>').append('<li><a href="#">Remove element</a></li>')                                  
    .append('<li><a href="#">Add element</a></li>')                                 
    .append('<li><a href="#">Element style</a></li>')                                  
    .append('<li><a href="#">Element props</a></li>')                                 
    .append('<li><a href="#">Open Inspector</a></li>')                    
    )              
    .show('fast'); // Показываем меню с небольшим стандартным эффектом jQuery. Как раз очень хорошо подходит для меню          
    }     
    });


Но тут отключение контексного меню идет на всем сайте через

document.oncontextmenu = function() {return false;}


А как убрать именно для моих картинок, но чтобы еще свое меню тоже работало?
Ответить с цитированием
  #3 (permalink)  
Старый 30.03.2015, 22:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Rabbit13245, второй картинке добавлен класс
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
   .context-menu{
     position: absolute;
     background: #D2B48C;
      border-radius: 8px
   }

  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
     $(function(){
       // Вешаем слушатель события нажатие кнопок мыши для всего документа:

    jQuery(document).on('contextmenu click' , '.images',function(event) {    event.preventDefault() ;
    // Убираем css класс selected-html-element у абсолютно всех элементов на странице с помощью селектора "*":
    jQuery('*').removeClass('selected-html-element');
    // Удаляем предыдущие вызванное контекстное меню:
    jQuery('.context-menu').remove();
    // Проверяем нажата ли именно правая кнопка мыши:
    if (event.which === 3)  {
    // Получаем элемент на котором был совершен клик:
    var target = $(this);
    // Добавляем класс selected-html-element что бы наглядно показать на чем именно мы кликнули (исключительно для тестирования):
    target.addClass('selected-html-element');
    // Создаем меню:
    jQuery('<div/>', {
    'class': 'context-menu'
    // Присваиваем блоку наш css класс контекстного меню:
    })
    .css({
    left: event.pageX+'px',
    // Задаем позицию меню на X
    top: event.pageY+'px'
    // Задаем позицию меню по Y
    })
    .appendTo('body') // Присоединяем наше меню к body документа:
    .append( // Добавляем пункты меню:
    jQuery('<ul/>').append('<li><a href="#">Remove element</a></li>')
    .append('<li><a href="#">Add element</a></li>')
    .append('<li><a href="#">Element style</a></li>')
    .append('<li><a href="#">Element props</a></li>')
    .append('<li><a href="#">Open Inspector</a></li>')
    )
    .show('fast'); // Показываем меню с небольшим стандартным эффектом jQuery. Как раз очень хорошо подходит для меню

      }

  });

});


  </script>
</head>

<body>
<img src="http://javascript.ru/forum/images/ca_serenity/misc/logo.gif" alt="">
<img src="http://javascript.ru/forum/images/ca_serenity/misc/logo.gif" class="images" alt="">
<img src="http://javascript.ru/forum/images/ca_serenity/misc/logo.gif" alt="">

</body>

</html>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Бесконечноуровневое меню на CSS ruslan_mart Ваши сайты и скрипты 5 12.01.2015 20:59
Выделение активных пунктов многоуровневого меню на jQuery Letto Элементы интерфейса 2 04.12.2013 15:30
jquery + wcf, вывести результат на странице вместо диалогового окна efes jQuery 1 08.11.2012 19:10
Картинка вместо меню при отключенном JS px379 Элементы интерфейса 0 01.05.2012 02:07
Проблема с аккордионом и меню Tie ExtJS 3 01.09.2011 14:36