• 締切済み

640px以下の時のみjQueryを有効にしたい

JQueryで、以下のソースでやりたい事が実現できました。 <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script> $(function() { $('nav ul').hide(); $('.menu-icon').on('click', function() { var $navList = $(this); if($navList.hasClass("current")) { $('nav ul').slideUp(500,function(){ $navList.removeClass("current"); }); } else { $('nav ul').slideDown(500,function(){ $navList.addClass("current"); }); }; return false; }); }); </script> が、640px以上のときも、効いてしまって「nav ul」が隠れてしまいます。そこで、 <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script> jQuery(document).ready(function($) { if (window.matchMedia( '(max-width: 640px)' ).matches) { 「上記javascript」 } </script> と、切り分けをし640px以下のときだけ、jqueryが聞くようにしたつもりなのですが、以下の問題が発生しました。 640px以上の場合はjavascriptが無効になったのですが、640px以下の場合には、以下の問題が発生しました。 ・640px以上の場合はhideされることなく表示されるようになったのですが、640px以下の場合にも.hideされずに開きっぱなし ・.menu-iconでhideのオン・オフが切り替えられたのですが、無反応になりました。 つまり、全体にjavascriptが全く聞いていない。640px以下の時のみjQueryを有効にするにはどうしたらいいのでしょうか?教えてください。 以上、よろしくおねがいします。

みんなの回答

回答No.2

詳細まで見てませんが全体の動作を640ピクセル以上の場合動かないようにしているのだから $('.menu-icon').on('click', function() {  からのくだりも640ピクセル以上の時は動作していない。 この部分はメニューのボタンをクリックされた時のイベントを追加している部分ですよね? この部分はウィンドウの横幅関係なく動作させないといけないのでは?

DrFell
質問者

補足

引き続き、ありがとうございます。 サイドメニューの動作で使用する予定です。ブラウザ幅641px以上の場合には、普通のcssでサイドメニューを表示しています。640px以下になった場合に、サイドメニューを非表示にし、menu-icon(バーガー)でメニューの開閉を行いたいです。 ですから、640pxの場合にはもともと出ていることから、ボタン操作は不要となります。 どうぞよろしくお願いします。

回答No.1

うーん 「やりたい事が実現」できたような気がしたけどうまく行ってないので、どうしたら良いかの質問だと思うのですが、 「やりたい事」は何ですか? 640px以上の時 → 何が640px以上ですか? 記載されたソースを読み取って「やりたい事」を推測して答えてくれる人も居るかもしれんが・・・・・

DrFell
質問者

お礼

muuming2001 さま、ありがとうございました。

DrFell
質問者

補足

伝わらない質問とのご指摘ありがとうございます。 最終目標は、レスポンスデザインページにしたいです。ブラウザ幅640px以下のアクセスの時のみ最初のjQueryソースの反映を行いたいのです。 どうぞよろしくお願いします。

関連するQ&A

  • jQueryが動きません。

    表題のとおりです。 fademover(http://www.detelu.com/fademover/)を動かそうと思って 導入しても動いてくれません。 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script src="jquery.fademover.js"></script> <script> $(function(){ $('body').fadeMover({'effectType': 2,'inSpeed': 5000}); }); </script> の部分。 Chromeだと Uncaught TypeError: Object [object Object] has no method 'fadeMover' index.html:14 (anonymous function) index.html:14 n ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js:2 o.fireWith ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js:2 e.extend.ready ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js:2 c.addEventListener.B Safariだと TypeError: 'undefined' is not a function (evaluating '$('body').fadeMover({'effectType': 2,'inSpeed': 5000})') と出ます。 jsやjqueryはあまりいじったことないので 手が出ない状態です。 よろしくお願いします。

  • jquery

    とあるサイトの 1つのソースの中に <scriptsrc="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"> と <scriptsrc="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"> があるのですが この二つは意味が違うのでしょうか? バージョンが 1.7.1と1.11.1になっていますが 1.11.1が数字が高いから、1.11.1だけあればいいのでしょうか?

  • CakePHPでjQueryを使うには

    ローカル環境にてCakePHPでwebサービスを制作しています。 ブラウザでviewを確認しながら構築しているのですが、この環境でgoogleAPIのjQueryを動作させることは出来るのでしょうか? もしできるとしたら、 <?php echo $this->Html->script('http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js');?> <script type="text/javascript"> jQuery('#more').click(function(){$('innerboxes').clone().appendTo('box')}); </script> で動かないのは何が問題なのでしょうか? また、googleAPIを使わない方法でも以下のように試しましたが、これも動かない原因はどこにあるのでしょうか? jQueryのホームページでver1.5のソースをコピーし作ったjQuery1.5.jsを、 webroot /jsに入れる。 Controllerに var $helpers=array('Ajax','Javascript'); を記述。 Viewに、 <?php echo $javascript->link('jQuery.1.5.js'); ?> <script type="text/javascript"> jQuery('#more').click(function(){$('innerboxes').clone().appendTo('box')}); </script> 宜しくお願いします。

  • <hoge />と<hoge></hoge>の違い

    現在jQueryを使ったプログラムをしていて、気になった点があったので質問させていただきました。 具体的には <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" charset="utf-8"/> <script type="text/javascript"> function show() { } </script> こんなソースを書いていましたが、showメソッドが認識されていませんでした。 そこで <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" charset="utf-8"></script> とかくと、後ろのメソッドも認識されました。 ここで疑問なのは</>と</script>の違いです。 この2つは何がちがうのでしょうか?

  • jqueryのアニメーションが動かない!!

    $(".skinTitleArea").css("opacity","0"); $(function(){ $(".skinTitleArea").animate({"opacity","1"},500); }; って入れても動かない。 http://ameblo.jp/koko5666/ アメブロなのですが、append等はちゃんと反映されてるのでjquery本体は読み込まれてます。なのにアニメーションanimateが動かない。入れるとjqueryが読み込まなくなって、他の記述も反映されなくなる。 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script> <script src="https://dl.dropbox.com/u/63681173/loveinstagram/jquery.common.js"></script> アニメーションが入ってるjavascriptは現在消してます https://dl.dropbox.com/u/63681173/loveinstagram/jquery.common.js

  • jquery3系がうまくいかない

    jquery3系が出ていたので使ってみたのですが、CDNはうまくいったのですが、そのものをダウンロードして使うほうがうまくいきません。 https://code.jquery.com/jquery-3.1.1.min.js のソースコードをコピペしてjquery-3.1.1.min.jsというファイルを自分で作って下記のようにしているのですが、CDNが読み込まれなかった場合に読み込むというやり方のようです。 <!-- start load jquery --> <!--[if lt IE 9]> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script>window.jQuery || document.write('<script src="/js/jquery-1.11.0.min.js"><\/script>')</script> <![endif]--> <!--[if gte IE 9]><!--> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> <script>window.jQuery || document.write('<script src="/js/jquery-3.1.1.min.js"><\/script>')</script> <!--<![endif]--> <!-- end load jquery --> ・もちろん下記のようにもしましたが駄目でした。 <!-- start load jquery --> <!--[if lt IE 9]> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script>window.jQuery || document.write('<script src="/js/jquery-1.11.0.min.js"><\/script>')</script> <![endif]--> <!--[if gte IE 9]><!--> <script>window.jQuery || document.write('<script src="/js/jquery-3.1.1.min.js"><\/script>')</script> <!--<![endif]--> <!-- end load jquery -->

  • 何をする為のjqueryなのでしょうか?

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"> は何をする為のjqueryなのでしょうか? googleと言う単語がパスの中に入ってますが googleに関連するものでしょうか?

  • 実行の順番を教えて下さい。

    ---------------------------------------------------------------------------------------------------------------- <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script type="text/javascript"> ( tmp_jquery=jQuery ・・・(1) )( function(){ $=jQuery=tmp_jquery; ・・・(2) } ); </script> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script> <script> $(function(){ alert(jQuery.fn.jquery); ・・・(3) }); </script> ---------------------------------------------------------------------------------------------------------------- 上記の処理では、jQuery1.7.1をロードして後、jQuery1.2.3をロードしていますが、 (1)のところで、jQuery1.7.1を保持し、 (2)で再び$とjQuery変数にロードしているため (3)のところで、"1.7.1"と表示されます。 さて、ここで(2)の部分がいつ実行されるのかが理解できません。 そもそも、今回の処理で記述されている ()() の意味がわかりません。 クロージャーなどで、 (function(){})() と記述しますが、 function(){}を式として認識させるために丸括弧で囲っているのは、 以下のサイトで知りました。 http://d.hatena.ne.jp/amachang/20080208/1202448348 今回も同様の意味なのでしょうか? だとすれば、(1)の前に(2)が実行されそうなのですが・・・。 どなたか、ご説明お願いできないでしょうか?

  • 複数jQueryの配置で干渉 設置位置

    Javascript事は全くわかりませんが、色々なプラグインとしてjQueryを利用しています。 ----------------- jQueryに干渉があったようで、正常に動作させたいのですが、疑問があります。 1サイト目(HTML 最下部に配置) <script src="vendor/jquery.min.js" type="text/javascript"></script> <script src="js/layout.min.js" type="text/javascript"></script> 正常に動作します。 2サイト目(HTML head内に配置) <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <script src="js/abcd.js" type="text/javascript"></script> 正常に動作します。 上記の2サイトを合体させた:(HTML 最下部に配置) <script src="vendor/jquery.min.js" type="text/javascript"></script> <script src="js/layout.min.js" type="text/javascript"></script> <script src="js/abcd.js" type="text/javascript"></script> すると、 layout.min.jsに不具合がでるようです・・・ <script src="vendor/jquery.min.js" type="text/javascript"></script> <script src="js/layout.min.js" type="text/javascript"></script> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <script src="js/abcd.js" type="text/javascript"></script> でも、ダメです。 <script src="vendor/jquery.min.js" type="text/javascript"></script> を <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> に変更してもダメでした。 tel.js内を、 jQuery.noConflict(); (function($) { $(function(){ を $j に変えたり、 jQuery に 書き替えてもダメでした・・・ そこで、以下のように移動しましたら動作しました。 (HTML header内に配置) <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <script src="js/abcd.js" type="text/javascript"></script> (HTML 最下部に配置) <script src="vendor/jquery.min.js" type="text/javascript"></script> <script src="js/layout.min.js" type="text/javascript"></script> 上記のように、 HTML head部と、HTML 最下部に分けるのは、正しい方法なのでしょうか?

  • jQueryと他のライブラリを同時に使用する方法

    すみません。 似たような質問あるかもしれません。 <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/jquery-ui.min.js"></script> <script type="text/javascript" src="ppgallery/js/ppgallery.js"></script> <script type="text/javascript"> $(document).ready(function() { $('#gallery').ppGallery({ showHiddenGalleryButton: '#view' //hide the gallery and assign a button (using it's id) that will execute the hidden gallery. Don't forget to make your button and give it an id }); }); </script> <link href="css/service.css" rel="stylesheet" type="text/css" /> <script type="text/javascript"> $(function() { $("h1").append('<em></em>') $(".thumbs a").click(function() { var largePath = $(this).attr("href"); var largeAlt = $(this).attr("title"); $(".largeImage").attr({ src: largePath, alt: largeAlt }); $("h1 em").html(" (" + largeAlt + ")"); return false; }); }); </script> という具合で、 ppgalleryとjavascriptの2つまではギャラリー入れることが出来たのですが。 この2つの間に、Lightboxを入れたいのですが、 Lightboxを入れるとどうしても、ppgalleryが作動しなくなるのですが、 http://stacktrace.jp/jquery/with_other_lib.html#other_version など見るのですがなにぶん、修行が足りなく、 僕には理解がきちんと出来ません。 お願い致します。 どなたか、Lightboxを作動できるようご教授ください。

専門家に質問してみよう