2011-01-19 63 views
1

我面临一个奇怪的情况。点击我绑定的事件将调用一个AJAX函数,但是当我按下Ctrl单击默认点击操作应该被禁用。有什么办法,我可以实现它..请就如何进一步进行任何想法..在Ctrl上禁用单击操作单击

$('#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); 
     }); 
    } 
}); 
+0

我能够做到这一点,但jstree绑定点击仍然启动...看到修改后的代码... – Sullan 2011-01-19 18:12:03

回答

2

检查e.ctrlKey

+0

只检查e.ctrlKey不会帮助,你应该检查e.ctrlKey ||如果在mac中按下命令键,e.metaKey作为metaKey属性设置为true – Amareswar 2011-05-16 05:20:18

0

我绝对不是那个熟悉的(只是最近我才在jQuery的开始),但会的preventDefault和http://plugins.jquery.com/plugin-tags/ctrl-click帮助你呢?

+0

event.preventDefault或preventPropogation?可能有帮助。当我有机会时,我会尝试一下。 – gbvb 2011-01-20 14:56:08

1
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,以防止事件“冒泡”。

+0

你还应该考虑shift键,就像[这个答案](http://stackoverflow.com/a/25919826/421243) – 2015-08-24 01:49:19