Отключить действие одиночного щелчка по Ctrl Click

Я столкнулся со странной ситуацией. При щелчке я привязываю событие, которое вызовет функцию AJAX, но когда я нажимаю Ctrl Click, действие щелчка по умолчанию должно быть отключено. Есть ли способ, которым я могу это достичь. Пожалуйста, поделитесь идеями о том, как действовать дальше.

$('#demo1').click(function(e) {
  if(e.ctrlKey  == true) {
    alert("control click");
  } 
  else {
    alert("normal click");
        $("#demo1").bind('select_node.jstree', function(event, data) {
        var url = data.rslt.obj.children("a:eq(0)").attr("href"); 
        $('.ui-layout-center').load(url);
        });
  } 
}); 

person Sullan    schedule 19.01.2011    source источник
comment
Я смог это сделать, но щелчок привязки jstree все еще инициируется... см. измененный код...   -  person Sullan    schedule 19.01.2011


Ответы (3)


Проверьте e.ctrlKey.

person SLaks    schedule 19.01.2011
comment
проверка только e.ctrlKey не поможет, вы должны проверить e.ctrlKey || e.metaKey, поскольку свойство metaKey имеет значение true, если командная клавиша нажата в Mac - person Amareswar; 16.05.2011

if ( e.ctrlKey || e.metaKey )
{
   /* do your click thing (e.g. open-in-new-window) */
   window.open( $(this).attr('data-url') );
   return;
}
else
{
   /* do your regular thing (e.g. go to another page) */
   window.location.href = $(this).attr('data-url');
}

для части привязки может быть e.preventDefault(); помогает?

И: попробуйте вернуть false в приведенном выше коде, чтобы предотвратить «всплывание» событий.

person Frank Nocke    schedule 12.08.2011
comment
Вы также должны учитывать клавишу Shift, как в этом ответе - person David Cook; 24.08.2015

Я определенно не настолько знаком (лишь недавно я начал с jquery), но предотвратил бы Default и http://plugins.jquery.com/plugin-tags/ctrl-click вам вообще помочь?

person gbvb    schedule 19.01.2011
comment
event.preventDefault или preventPropogation? может помочь. Я попробую, когда у меня будет шанс. - person gbvb; 20.01.2011