• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:jQuery IEでctrl + click判別)

jQuery IEでctrl + click判別

このQ&Aのポイント
  • jQueryを使用して、HTMLのpタグでくくった要素をクリックした際にctrlキー + クリックしたかどうかを判別する方法を知りたいです。
  • 現在の処理では、ChromeやFirefoxではctrlキー + クリックを判別できますが、IEでは判別できないです。
  • IEでもctrl + clickされたことを取得する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

質問者さんのソースコードで問題なく動くと思います。 私は、Windows10のIE11と、そのエミュレートによるIE9で動作を確認しました。 デモとそのソースコードをギットハブで公開しているので、確認をお願いします。

参考URL:
https://github.com/sutara79/demo-jq-ctrlkey
yama-maron
質問者

お礼

sutara79様 ご回答いただきまして、ありがとうございます。 GitHubにてソースを共有いただきまして、大変強縮です。 こちらのソースで私の環境で試してみましたところ、IE9,8でアラートが表示されることを確認致しました。 pringlez様にご回答いただきました内容を元に私の方で試しているソースに近い形ですが、読み込んでいるjQueryのバージョンも合わせているのに私の方でアラートが出ないので、HTMLのボタンのコーディングの違いかもしれません。 アラートが出る形でソースをいただいておりますので、こちらを元に私がコーディングしましたHTMLの方を修正していきたいと思います。 ご教授いただきまして、とても助かりました。 どうもありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • pringlez
  • ベストアンサー率36% (598/1630)
回答No.1

そもそも論で、クリックイベントでキーボードの入力状態をとれることの方が特殊に感じます。最新のChromeとFirefoxで使えたとしても今後のバージョンでサポートされ続けるかわからない機能だと思います。そんな機能は使わない方がいいと思います。 今回のあなたのやりたいことを実現させるには通常、kedownイベントでCtrlキーだったらグローバル変数のフラグをtrueにし、keyupでfalseにする。で、clickイベント時にフラグを見て処理分けをすればいいと。キーイベントとマウスイベントは別々に処理するのが王道です。

yama-maron
質問者

お礼

pringlez様 ご連絡が遅くなってしまいまして、大変失礼致しました。 ご回答いただきまして、ありがとうございます。 キーボードでのイベントとマウスでのイベント、別々に処理をするということでとても勉強になりました。 別々に処理をした形で実装していたのですが、まだIEでアラートを出せないでおりますが、引き続き対応していきたいと思います。 ご教授いただきまして、とても助かりました。 どうもありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • jQueryで設定したイベントハンドラが消える

    jQueryについての質問です。 ちょっと言葉での説明が難しいので、具体的なコードを記載します。 === JavaScript === var clicked = function () { alert(1); }; var jqButton = $("<input type='button' value='test' />"); jqButton.click(clicked); $(function() { $("#showButton").click(function () { $("#test").html(jqButton); }); $("#hideButton").click(function () { $("#test").html(""); }); }); === HTML === <input type="button" id="showButton" value="show" /> <input type="button" id="hideButton" value="hide" /> <div id="test"></div> showボタンをクリックすると、testボタンが表示されます。 hideボタンをクリックすると、testボタンが消えます。 testボタンをクリックすると、alert(1) が実行されます。 という内容なのですが、一度hideしてから再度showして現れたtestボタンをクリックしても、 何も起きません。 仮に、jqButton.click(clicked); の部分を、 jqButton[0].attachEvent("onclick", clicked); などにすると、再表示させたtestボタンも動作します。 これはjQueryのイベントハンドラ設定APIを使った時特有の症状だと思うのですが、 なぜこのような結果になるのでしょうか。 てっきり、$.click()でイベントハンドラを設定すると、 内部でattachEventとかaddEventListnerとかが走るだけだと想像してましたが・・・ また、attachEventなど使わずに、jQueryの機能を使って、 再表示させてtestボタンも動作させるには、どうしたらいいでしょうか。 ご存知の方いましたら、お願い致します。

  • jQuery イベントの繰り返し

    jQuery イベントの繰り返し ボタンが.button1から.button10まであり、それぞれを押すと .imgareaに1.ipgから10.jpgまでを表示させたいと思っています。 jQueryで下記のように書いたのですが、 最後のiが10のときのイベントしか反映されません…。 うまく記述するにはどうすればよいでしょうか? よろしくお願いいたします。 for(i=1; i<=10; i++){ $(".button"+i.toString()).click(function(){ $(".imgarea").attr("src",i.toString()+".jpg"); }) }

  • jQueryでshow/hideが上手く行かない

    入力フィールドとボタンを作成し、ボタンを押すたびに入力フィールドが表示・非表示を繰り返すようにしたいと思っています。 入力フィールドが表示されているときにはボタンは"hide"、非表示の時は"show"が表示されている仕様です。 <div id="input"><input type="text" name="something"></div> <input type="button" id="button" value="hide"> 以下のようにjQueryを組んでみました。 $(document).ready(function(){ if($("#button").attr("value") == "hide"){ $("#button").click(function(){ alert("VALUE=" + $("#button").attr("value")), $("#input").children().hide(), $("#button").attr("value", "show"); }); } else if($("#button").attr("value") == "show"){ $("#button").click(function(){ alert("VALUE=" + $("#button").attr("value")), $("#input").children().show(), $("#button").attr("value", "hide"); }); } }); まず、hideボタンを押すとhideのアラートが出てフィールドが非表示になり、showというボタンのみが残ります。 次にshowボタンを押すと、showのアラートは表示されますが、フィールドが再表示されず、ボタンもshowのままです。 elseのalertまで行っているのにその後が機能しないのは何故でしょうか?

  • jQueryでajax

    ajax(jQuery使用)を使った以下のサンプルは、 セレクトボックスを選択すると、ボタンを表示するのですが、 そのボタンをクリックしても、アラート(This is success!)が表示されません。 ajaxで吐き出した<button>ボタン</button>のボタンのクリックイベントが 検知しないような感じですが、いったいどこが間違っているのかわかりません。 どなたか、ご教授いただけると助かります。 htmlソース ------------------------------------------- <meta http-equiv="content-script-Type" content="text/javascript" /> <meta http-equiv="content-style-Type" content="text/css" /> <link rel="stylesheet" href="./photo.css" media="all" /> <title> テスト</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function() { $("button").click(function() { alert("Test is success!"); }); $(".first").change(function() { var param = ''; $.ajax ({ type: "POST", url: "ajax.php", data: param, cache: false, success: function(res) { $("#result").html(res); } }); }); }); </script> </head> <body> <select name="first" class="first" id="first"> <option value="1">項目1</option> <option value="2">項目2</option> </select> <p>結果:</p> <div id="result" style="width:808px;"></div> </body> </html> phpソース ---------------------------------------- <?php echo '<button>ボタン</button>'; ?>

    • ベストアンサー
    • AJAX
  • jQueryのclickについて

    現在仕事でjQueryを使用して、要素の表示非表示を行うイベントを作成しているのですが、一つ難題がありまして・・・まず下記に簡単に文法を記述しましたのでご覧下さいませ・・・ 『html』 <ul> <li>ボタン1</li> <li>ボタン2</li> <li>ボタン3</li> </ul> <div class="area"><!-- 要素 --></div> <div class="area"><!-- 要素 --></div> <div class="area"><!-- 要素 --></div> 『jQuery』 j$("li").click(function(){ var btnNum = j$("li").index(this); j$(".area").hide(""); j$(".area").eq(btnNum).show(""); }); 上記にしたときに例えば”ボタン1”を押した時に再度”ボタン1”をおすとここでいう一番目の”area”を消去したいのですが、 toggleを使用すると”ボタン1”を押した時に”ボタン2”を押すと再び”ボタン1”を押すと、消去してからの動作をするため二度クリックしないと”area”が表示されません… そこでtoggleの様な動作で、同じボタンを二度押すと対象の要素が消去されるようないい方法ありませんでしょうか? 折角jQueryを使用しているのでスリムな記述がしたいんですよね・・・ 宜しくお願いします。

  • Jquery と JqueryUIについて

    現在、Jquery と JqueryUIを使ってプログラムを書いています。上手く動作しないので以下について教えてください。 やりたいことは、ボタンを押すと文字があらわれたり消えたりするという動作を実現したいと思っていますが、今は、ボタンと文字が表示されるのみで、ボタンを押しても全く動きません。 現在書いているコードは以下のとおりです。 ---- <html> <head> <script type="text/javascript" src="js/jquery-1.7.1.min.js"></script> <script type="text/javascript" src="js/jquery-ui-1.8.17.custom.min.js"></script> <script> $(function() { $('#button').click(function(){ $('#sample-text').show(); }); }); </script> </head> <body> <input type="button" id="button" value="ボタン"> <p id="sample-text">Hello World!</p> </body> </html> ------------------- Jqueryのバージョンは、最初、UIとの互換性を考え、1.3.2を使っていましたが、動かないため、現在は新しいバージョンで試してみたところです。(1.4.4でもだめでした) JSファイルの場所は、上記htmlファイルと同じ階層のjsディレクトリ内です。 また、補足ですが、これが上手くいけば、script内の show メソッドのかわりに toggleを使いたいと考えています。 上記コードで間違っている部分がわかる方がいらっしゃいましたら教えてください。 よろしくお願いいたします。

    • ベストアンサー
    • AJAX
  • jQueryでclientWidthが使えない

    ブラウザの表示領域を取得するのに $('html').attr('clientWidth') という方法を使っていたのですが、 jQuery 1.4.2 から jQuery 1.6.2 にしたら undefined で使えなくなっていました。 この方法は非推奨になってしまったのでしょうか? WindowsXPのIE8 / Firefox4 / Chrome13で確認しました。

  • JQueryがChromeで動くがIEで動かない

    JQueryで書いた単純なJavaScriptが IEで動かず困っています。 Firefoxでも動いており F12のデバッガを使ったとき、 Chromeと、Firefoxはデバッグポイントでストップするのですが、 IEだけ、そもそもFunctionの中に入ってきません。 $(function(){ //do something }); ちなみに、documentのreadyや、ドロップダウンリストボックスのchangeのイベントです。 お知恵をお借りできませんでしょうか? 宜しくお願い致します。

  • jQuery 動的にボタンが増えた時

    <html> <head> <title>js sample</title> <script type="text/javascript" src="js/jquery-1.3.2.js"></script> <script type="text/javascript"> jQuery(document).ready( function() { $(".button_cls_1").click(function(){ alert('hello world! button 1'); }); $(".button_cls_2").click(function(){ alert('hello world! button 2'); }); }); </script> </head> <body> <input class="button_cls_1" type="button" value="テスト1" /> <input class="button_cls_2" type="button" value="テスト2" /> </body> </html> 上記のようなスクリプトでbutton_cls_1、button_cls_2が動的に増えた時に どのように書いたらいいかわかりません。 button_cls_1、button_cls_2、button_cls_3、button_cls_4の時もあれば button_cls_1、button_cls_2の時もあります。

  • jQuery1.4.2、jQueryUI1.8.4、toggle()の

    jQuery1.4.2、jQueryUI1.8.4、toggle()の状態を初期化 jQuery1.4.2、jQueryUI1.8.4にて、 toggle()を使用したあと、別のボタンなどで、そのtoggleの状態を初期化することは出来るのでしょうか。 <a id="button">ボタン</a> <div id="info"> <a id="close">閉じる</a> <p>あいうえお</p> </div> <script> $('#button').toggle( function(){$('#info').show('slide')}, function(){$('#info').hide('slide')} ); $('#close').click(function(){$('#info').hide('slide');}); </script> 「ボタン」を押して#infoを表示した後、「閉じる」を押して非表示にし、 もう一度「ボタン」を押すと、hide()が実行されてしまうため、このときにshow()が実行されるようにしたいのです。 フラグを使って.click()で切り替えれば作れますが、 せっかくtoggle()のようなメソッドがあるなら、それを利用できないかと思ったのですが。

懐かしのファッション
このQ&Aのポイント
  • 懐かしいドラマ『東京ラブストーリー』の最終回を見て思い出した懐かしいファッション
  • ドラマの佳境で流れる『ラブストーリーは突然に』のインパクトとキャラクターの魅力
  • バブル期のファッションに見られた肩パット強調のスーツやワンレンヘアなどの懐かしいスタイル
回答を見る

専門家に質問してみよう