jQueryでページ要素を並列で取得する方法

このQ&Aのポイント
  • jQueryでページ要素を並列で取得する方法について教えてください。
  • 質問者は、div要素を並列で取得しようとしていますが、更新が遅れる問題に直面しています。
  • 質問者は、どのように修正すれば5秒後にすべての要素の更新が完了するか知りたいと思っています。
回答を見る
  • ベストアンサー

jQuery 並列load処理

jQueryで、ページを構成する要素を並列で取得しようと考えています。 「/samples/heavy_function_parts」は5秒後に現在時刻を返す処理です。 下記のようなコードを書くと、div「Info5」が更新されるのが、ページ表示後 25秒後となります。 5秒後にすべての情報の更新が完了することを期待しているのですが、 どのように修正すべきでしょうか? <script type="text/javascript"> $(function(){ $("#Info1").load("/samples/heavy_function_parts"); $("#Info2").load("/samples/heavy_function_parts"); $("#Info3").load("/samples/heavy_function_parts"); $("#Info4").load("/samples/heavy_function_parts"); $("#Info5").load("/samples/heavy_function_parts"); }); </script> <div id="Info1">情報1</div> <div id="Info2">情報2</div> <div id="Info3">情報3</div> <div id="Info4">情報4</div> <div id="Info5">情報5</div>

noname#129301
noname#129301
  • AJAX
  • 回答数2
  • ありがとう数4

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

  • ベストアンサー
  • yui-magic
  • ベストアンサー率62% (20/32)
回答No.1

$("#Info1,#Info2,#Info3,#Info4,#Info5").load("/samples/heavy_function_parts"); のようにカンマ区切りで複数指定してみてはどうでしょうか?

noname#129301
質問者

お礼

同時に更新されることは確認しました。 が、実際にやりたいことは別々のページを同時に読み込むことです。 今回のやり方だと同じページ内容を、それぞれのdivに表示することになります。 別々のページであっても同時に取得できる方法があれば、お教えいただければと思います。

その他の回答 (1)

  • yui-magic
  • ベストアンサー率62% (20/32)
回答No.2

#1です。 >実際にやりたいことは別々のページを同時に読み込むことです。 ということは、「/samples/heavy_function_parts」の中で、読み込むものを分岐させているのですか? また、見たところ呼び出されたファイルのほうでスリープの処理をしているみたいですが JavaScript側でsetTimeout等を使ってみるのも一つの手だと思います。 ちなみに、自分でやってみたところ JavaScript側でsetTimeoutを実行した場合は全部同時に5秒で終わり、 逆に、php側でスリープさせた場合は25秒かかりました。 どのようにスリープさせているのか分かれば、もう少しいろいろ書けると思います。

noname#129301
質問者

お礼

http://okwave.jp/qa/q6597305.html こちらに条件の追加含めて再質問させていただきました。 セレクタで複数指定すれば同時に内容を変更することもできるということで、いったんこの質問はクローズしたいと思います。 ありがとうございました。

関連するQ&A

  • jQuery 並列load処理

    jQueryで、ページを構成する要素を並列で取得しようと考えています。 「/samples/heavy_function_parts1」 「/samples/heavy_function_parts2」 「/samples/heavy_function_parts3」 「/samples/heavy_function_parts4」 「/samples/heavy_function_parts5」 はそれぞれ、sleepして5秒後に現在時刻を返す処理となります。 下記のようなコードを書くと、div「Info5」が更新されるのが、ページ表示後 25秒後となります。 5秒後にすべての情報の更新が完了することを期待しているのですが、 どのように修正すべきでしょうか? ※FirefoxのLive HTTP headersを使ってログを取得してみると、リクエストは 同時に一つしか行われていない(リクエストが完了してから次のリクエストが 行われている)ようです。もしかしてWebブラウザの仕様だったりしますでしょうか? <script type="text/javascript"> $(function(){ $("#Info1").load("/samples/heavy_function_parts1"); $("#Info2").load("/samples/heavy_function_parts2"); $("#Info3").load("/samples/heavy_function_parts3"); $("#Info4").load("/samples/heavy_function_parts4"); $("#Info5").load("/samples/heavy_function_parts5"); }); </script> <div id="Info1">情報1</div> <div id="Info2">情報2</div> <div id="Info3">情報3</div> <div id="Info4">情報4</div> <div id="Info5">情報5</div>

    • ベストアンサー
    • AJAX
  • jQueryでloadしたphpをapendToしたいのですが。

    jQueryのload関数を使って、日付を元にランダムな10ケタの数字を生成するプログラム(rand.php)を読み込み、そのプログラムの結果をcontentsというIDのdiv内にappendToしたいのです。 そして、5秒ごとにrand.phpを読み込み、そのたびにcontentsというIDのdiv内に結果をappendToしたいのです。 イメージとしては下記のような感じになります。 $(function(){ function loadAndAppend(){ $("div#contents").apendTo(load("rand.php")); setTimeout(loadAndAppend, 5000); }; loadAndAppend(); }); しかし、これだとうまくいきません。apendTo(load("rand.php"))という部分がおかしいのでしょうが、これをどう直せばよいか分かりません。 ぜひとも解決法を教えていただけないでしょうか。

  • 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()のようなメソッドがあるなら、それを利用できないかと思ったのですが。

  • jqueryを使った共通html埋め込みができない

    各ページに共通なヘッダ部分を、jqueryを使って読み込みたいと以下のコードを書いたのですが、なぜか読み込まれません。 test.htmlとheader.htmlは同階層(トップレベル)にあって、jsディレクトリにjquery-1.7.1.min.jsを置いています。 どうか知恵をお貸しください。 よろしくお願いします。 test.html <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="js/jquery-1.7.1.min.js"></script> <script type="text/javascript"> <!–- $(function(){ $("#header").load("header.html"); }); // -–> </script> <title>test</title> </head> <body> <div id="header"></div> main </body> </html> header.html <div id="header">header</div>

  • jQueryでloadした要素の操作ができない

    loadにて特定のIDを読み込みした後、そのID内の要素にクラスを追加したりdiv要素を追加したりしようとしていますが、読み込んだり読み込まなかったりで困っています。 firebug、chromeは問題なし、iPhone、xperiaで読み込んだIDにaddClass, wrapが適用できません。 ページをリロードすると適用されるので、読み込みの順番かと思いますが、、、 $(window).loadもダメでした。 <div id="loading01"></div> <script type="text/javascript"> $("#loading01").load("../index.html #hogehoge"); </script> <script type="text/javascript"> $("#hogehoge").ready(function() { $('#loading01 li')addClass('css01'); $('#loading01 a').wrap('<div class="css02"><div class="css03">') }); </script> 数時間困り果てています。。。よろしくお願いします。

  • JQueryでのloadの動作がFirefoxで動かなくて困っています

    JQueryでのloadの動作がFirefoxで動かなくて困っています。 サイトのheaderとfooterを外部htmlにして、JQueryのloadで呼び出し指定のdivに出力するようにしたいのですが、IEでは上手くいきましたが、FFでは全く動きません。 $(document).ready(function(){ $("#header").load("../js/header.html #header"); $("#footer").load("../js/footer.html #footer"); });

  • JQUERY のEmpty()処理について

    JQUERY のEmpty()処理について 次のコードで$('#board').empty(); 後に追加作成した要素はクリックに反応しないのですが、対応の方法をお教えください。 <html><head><title></title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script src="subf/jquery-1.4.2.min.js" type="text/javascript"></script> <script type="text/javascript"> $(function (){ $('#board').append('<div id="card1" class="card"'); $('#card1').html("Card1"); $('#board').append('<div id="card2" class="card"'); $('#card2').html("Card2"); $('.card').click(function(){ alert($(this).attr("id")); }); }); function removeObj(){ $('#board').empty(); $('#board').append('<div id="card3" class="card"'); $('#card3').html("Card3"); } </script> </head> <body> <form><input type='button' onclick='removeObj()' value='Reset'></form> <div id="board" style="WIDTH: 10%; TOP: 100px; HEIGHT: 100px; BACKGROUND-COLOR: #ccff33"></div> </body></html>

  • jQuery.jsを使ったhtml外部読み込み

    教えてください。 現在Jqueryを使用して外部htmlを読み込ませようとしていますが、 うまくいきません・・・ ■本体html <head> <script src="js/jquery-1.8.3.min.js"></script> </head> <body> <script type="text/javascript" src="sample.js"></scrip> <div id="sample"></div> </body> ■sample.js // JavaScript Document $(function(){ $("#sample").load("sample.html"); }); ■読み込ませるsample.html 特に設定なし このような感じですが、全然読み込めません。。。 javascriptを外部リンクにしているのは、読み込むhtmlが複数ある為、 headの見栄えが悪くなるからという個人的な意見です・・・ 済みませんがお知恵をお貸しください!!

  • jQueryのloadのcallbackが変な動作

    jQueryのloadメソッドでCallBackが成功しているにも関わらず失敗する場合があります・・・対象方法が全くわからないのでご教示願えませんでしょうか? 【A.html】 <script type="text/javascript" src="jquery-1.4.1.min.js"></script> <table> <tr> <td><div id = "target_1"><div id = "target_2"></td> </tr> </table> <script type="text/javascript"> $.ajaxSetup({ cache: false }); var xmlHttp; xmlHttp = new XMLHttpRequest(); xmlHttp.open("GET", "A.html", false); xmlHttp.send(null); alert(xmlHttp.responseText); $(document).ready(function(){ $("#target_1").load("a.txt .tag", function(Text, status) { if ($("#target_1").text() == "あああ") { $("#target_1").replaceWith("<img src = 'a.png'>"); else if ($("#target_1").text() == "いいい") $("#target_1").replaceWith("<img src = 'b.png'>"); alert( "text: " + Text + "\nstatus: " + status ); }); $(document).ready(function(){ $("#target_1").load("a.txt .tag", function(Text, status) { if ($("#target_1").text() == "あああ") { $("#target_2").load("a.txt .5tag");★ else if ($("#target_1").text() == "いいい") $("#target_2").load("a.txt .5tag");★ alert( "text: " + Text + "\nstatus: " + status ); }); }); 問題は★印が付いているところの処理です。 アラートではSUCCESSになるのですが、なぜかロードが失敗する時があります。 割合としては10回に1回程度で1回発生するとブラウザの再起動をしない限り二度とロードができなくなります。 原因は何がいけないのでしょうか?

  • 【jQuery】jQuery Masonry

    この度jQueryで壁にぶつかり、質問させて頂きます。 現在開発中のWEBサービスにて、jQuery Masonryとアコーディオン機能を組み合わせたページを構築する流れとなっております。 画面イメージとしては・・ Pinterestにアコーディオン機能が付いており、各帯をクリックする毎に内容が表示される機能です。 【Point】横幅は制限がありますが、縦幅には制限が無く、アコーディオンが開閉する毎にグリッド部分の再構築(ムーブアクション)を行いたいのですが、それが上手くいきません。 参考サイト:http://goo.gl/QLQI7 実際のソース(抜粋): <script> jQuery(function(){ var $container = $('#container'); $container.imagesLoaded( function(){ jQuery('#container').masonry({ itemSelector: '.item', isAnimated:true }); }); }); </script> <script> jQuery(function () { jQuery("dd").css("display","none"); jQuery("dl dt").click(function(){ var cont = jQuery(this).next(); if(jQuery(cont).css("display")=="none"){ jQuery("dd").slideUp("slow"); jQuery(cont).slideDown("fast"); jQuery("dt").removeClass("select"); jQuery(this).addClass("select"); } }).hover( function(){jQuery(this).addClass("over");} ),( function(){jQuery(this).removeClass("over");} ); }); </script> <div id="container"> ~ここから~ <div class="item"> <dl> <dt>タイトル1</dt> <dd>本文1</dd> <dt>タイトル2</dt> <dd>本文2</dd> <dt>タイトル3</dt> <dd>本文3</dd> </dl> </div> </div> ~ここまでがLoopで複数のデータが表示される~ なお、jQuery初心者でして具体的な構文までをサポート頂けますと幸いです。 よろしくお願い致します。

    • ベストアンサー
    • CSS

専門家に質問してみよう