2011-01-19 12 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

答えて

2

がチェックe.ctrlKey ..私はそれを達成することができる任意の方法はあります..さらに続行する方法上の任意のアイデアを共有してください。

+0

e.ctrlKeyチェックのみe.ctrlKeyを確認する必要があります。 metaKeyプロパティとしてのe.metaKeyは、MACでコマンドキーが押された場合にtrueに設定されます – Amareswar

0

私は間違いなくよく知られていません(最近はjqueryで始めましたが)Defaultとhttp://plugins.jquery.com/plugin-tags/ctrl-clickはまったく役に立ちますか?

+0

event.preventDefaultまたはpreventPropogation?役立つかもしれません。私はチャンスがあるときにそれを試してみる。 – gbvb

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

[この回答](http://stackoverflow.com/a/25919826/421243)のようにシフトキーも考慮する必要があります。 –

関連する問題