jQueryを使用してボタンをクリックするとプラスして表示する方法

このQ&Aのポイント
  • jQueryを使用してボタンをクリックすると、コンテンツを追加して表示する方法を説明します。
  • 特定の条件を満たした場合に別のページを別ウィンドウで開く方法を説明します。
  • 特定の条件を満たした場合にボタンの表示名を変更する方法や非表示にする方法を説明します。
回答を見る
  • ベストアンサー

jqueryで以下のようにして読み込みをさせて

jqueryで以下のようにして読み込みをさせて ボタンをクリックするとプラスして表示する形にしているのですが $(document).ready(function(){ window.scrollTo(0,1); $('#river').load('/test.php', null, function(){ }); var pageset=1; $('#loadmore').click(function(){ var a = $(this); var b = $(this).html(); $.get('/test.php?page='+pageset, function (data){ $("#river").append(data); pageset = pageset + 1; a.html(b); }); return false; }); }); <ボタン、表示部分のソース> <div id="river" rel=""> <p id="loading">loading</p> </div> <a href="#" class="action more" id="loadmore">ボタン</a> pagesetの値が一定の数に達した際(たとえば5など)に ボタンをクリックすると別ページを別窓で開かせるようにしたいのですが (http://www.yahoo.co.jp/が別窓で開くなど) どのような記述を追加すればよいのでしょうか。 また、pagesetの値が一定の数に達した(たとえば5など)際に 「ボタン」とかかれた部分を別の名前に変更させる場合や非表示にする場合は どのような記述をすれば可能になりますでしょうか。 調べながら色々やってみたのですが、どうしても上手くいきません。 聞いてばかりで申し訳ありませんが ご教授いただけますと幸いですm(__)m

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

回答がないみたいなので… ajaxを行なおうとしているくらいですし、ご質問なさっていることは、ほとんどご提示のサンプルの中に記述されていることなので、質問の必要もないと思うのですが… 要素の指定は > $('#river') と同様 (idがない場合のセレクタも多様に用意されています。) クリックイベントの設定は、既にご提示のサンプルにあるとおり。 jqueryのclick()だと上書きはされないので、元の設定も残ります。(両方動作するようになる) 元の処理をはずして新しい処理に変える場合は、元のイベント設定をはずす必要があります。 その場合は unbind([type], [data]) を。 別ウィンドウを開くのなら  window.open("http://www.yahoo.co.jp/", "_blank"); みたいな感じで。 コンテンツの内容の変更は > a.html(b); と同様 非表示は  element.hide() とか element.css("display","none") などで >調べながら色々やってみたのですが、 jqueryのドキュメントならここに  http://docs.jquery.com/Main_Page 日本語の解説サイト  http://semooh.jp/jquery/

bou1025
質問者

お礼

ajaxは初めて挑戦するところで全くと言って良いほどわかりませんでしたので 素人判断でjavascriptの処理を参考に真似て追加したりしましたが エラーになり上手く稼動しませんでした。 自分なりに試行錯誤していたのですが 調べ方や見方が足らないおかげで質問に頼っておりました。 追加の場所やそもそも文法など記述方法に問題があったのだと思いますが いただいた情報のおかげで解決できました。 ありがとうございました。

関連するQ&A

  • jQueryを使ってランダムに表示

    jQueryを使って5つのボックス要素を、ランダムに3つ表示させています。 現在はページを読み込むたびに表示を切り替えていますが、これを「一定時間で表示を切り替え」に変更する事は可能でしょうか? できればjsのみの修正でできれば良いのですが…。 どなたかお助けください。よろしくお願いいたします。 jsとhtmlは以下のようにしています。 jQuery(function($) { $.fn.extend({ randomdisplay : function(num) { return this.each(function() { var chn = $(this).children().hide().length; for(var i = 0; i < num && i < chn; i++) { var r = parseInt(Math.random() * (chn - i)) + i; $(this).children().eq(r).show().prependTo($(this)); } }); } }); $(function(){ $("[randomdisplay]").each(function() { $(this).randomdisplay($(this).attr("randomdisplay")); }); }); }); <div randomdisplay="3"> <div id="box">ランダム1</div> <div id="box">ランダム2</div> <div id="box">ランダム3</div> <div id="box">ランダム4</div> <div id="box">ランダム5</div> </div>

  • jQueryを利用してのランダム表示について

    jQueryを学習しています。学習し始めてから1ヵ月程度になります。 途中まで考えたのですが、次にどうしたらいいか検討がつきません。 基本的なこともあまりわかっていない状況での質問で申し訳ありません。 どなたかご教授のほどお願いいたします。 考えていることは以下になります。 ・Nextのボタンを押すとランダムでclass=boxの内容を1つ表示したい ・再度、Nextのボタンを押すと表示されていたものが消えて、別のclass=boxを表示したい //////////////// スクリプト //////////////// <script type="text/javascript"> var a = ".box" $(function(){ $(a).hide(); }); $(function(){ $("#tugi").click( function(){ var items = $(a).get().sort(function() { return Math.round(Math.random()) ; }).slice(0, 1); $(items).show(); }); }); $(function(){ $(".answer").hide(); }); $(function(){ $(".kirikae").click( function(){ $(this).next().toggle(); }); }); </script> //////////////// HTML //////////////// <body> <div id="wrap"> <input type="button" value="Next"id="tugi"/> <div id="1" class="box"> 問題1 <br /> <input type="button"value="答えの表示" class="kirikae"/> <div class="answer"> 答え1 <!-- /div .answer --></div> <!-- /div#1 --></div> <div id="2" class="box"> 問題2<br /> <input type="button"value="答えの表示" class="kirikae"/> <div class="answer"> 答え2 <!-- /div .answer --></div> <!-- /div#2 --></div> <div id="3" class="box"> 問題3<br /> <input type="button"value="答えの表示" class="kirikae"/> <div class="answer"> 答え3 <!-- /div .answer --></div> <!-- /div#3 --></div> <div id="4" class="box"> 問題4<br /> <input type="button"value="答えの表示" class="kirikae"/> <div class="answer"> 答え4 <!-- /div .answer --></div> <!-- /div#4 --></div> <!-- /div#wrap --></div> </body>

  • jQuery膨らむボタン。同一ウィンドウにリンク

    http://jquery.malsup.com/hoverpulse/anchor.html ↑これを参考にjQueryでマウスを上にのせると膨らむボタンを作ったのですがクリックするとリンク先が別タブで開かれてしまいます。 同一のウィンドウ(HTMLでいうTARGET="_self")でリンク先を表示させたいのですがどうしたらいいですか? $(document).ready(function() { $('div.thumb img').hoverpulse().each(function() { var $img = $(this); var link = $img.attr('data-link'); $img.attr('title','Goto: ' + link); $img.click(function() { window.open(link); return false; }); }); }); <div id="thumbs"><div class="thumb"> <img src="img.jpg" data-link="http://google.com" /> </div></div>

  • 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を使用しているのでスリムな記述がしたいんですよね・・・ 宜しくお願いします。

  • 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でページ内リンクに誤差が出る。

    フェード効果を追加したページ内リンクをクリックすると、上に300px程ずれてしまうエラーがでてしまいます。 これを解決するにはどうすればいいでしょうか? http://code.jquery.com/jquery-1.6.2.jsを使用 * javascript ************* (function($){ var speed = 300,   active = "actve",   n_active = ":not(." + active + ")",   getTarget = function(elm){    var h, r = $("");    elm.each(function(){     if(h=$(this).attr("href").match(/#.+$/)) r = r.add(h[0]);    });    return r;   }; $.fn.extend({  changer : function(){   var t = $(this).children("a");   getTarget(t.filter(n_active)).hide();   t.click(function(){    var elm, func, t = $(this);    getTarget(t.parent().children("a")).queue([]).stop(1,1);    func = function(){     getTarget(t.addClass(active)).fadeIn(speed);    };    elm = getTarget(t.siblings("."+active).removeClass(active));    if(elm.length) elm.fadeOut(speed, func); else func();    return false;   });  } }); })(jQuery); $(function(){  $("#group1").changer(); }); * html ************* <div style="padding:500px 0 500px;">余白用</div> <div id="group1"> <a href="#text1" class="actve">1を表示</a> <a href="#text2">2を表示</a> <a href="#text3">3を表示</a> </div> <hr> <div id="text1"><p>1111111111111111111111</p><p>1111111111111111111111</p><p>1111111111111111111111</p><p>1111111111111111111111</p><p>1111111111111111111111</p></div> <div id="text2"><p>テストテストテストテストテストテストテストテスト</p><p>テストテストテストテストテストテストテストテスト</p><p>テストテストテストテストテストテストテストテスト</p><p>テストテストテストテストテストテストテストテスト</p></div> <div id="text3"><p>333333</p><p>333333</p><p>333333</p><p>333333</p><p>333333</p><p>333333</p><p>333333</p><p>333333</p><p>333333</p><p>333333</p><p>333333</p><p>333333</p><p>333333</p><p>333333</p></div> 上記の内容で、リンクをクリックすると切り替わったと同時に、上に戻ってしまいます。 見たところ、ランダムではなく、一定の箇所まで戻るといった感じでした。 これを直すにはどうすればいいでしょうか?

  • jQuery マウスオーバーのたびに処理を繰り返す

    よろしくお願いします。 jQueryを使用して、「サムネイルにマウスを乗せると別のDiv内に大きい画像とtitle属性のテキストを表示させる」というものを作ろうとしています。 別のDiv要素には上下左右中央に画像を表示させたいと思い、見よう見まねで下記のようなコードを作成したのですが、表示される画像がサムネイル時の大きさに縮小されてしまい、元の大きさの画像として表示されません。(サムネイルには元画像をcssで縮小して表示しています) やりたいことは以下の2つです。 ・Div要素には元画像の大きさで表示させたい。 ・できれば、フェードイン・アウトで画像を切り替えたい。 色々調べてみたのですが行き詰ってしまい、こちらに質問させて頂きました。 お分かりになる方がいらっしゃいましたら、お知恵をお貸し頂けませんでしょうか。 ////スクリプト//// $(function(){ $('#contents li a').click(function(){ return false; }); $('#contents li a').mouseover(function(){ var $title = $(this).children('img').attr('title'); var w = $(this).children('img').width(); var h = $(this).children('img').height(); $('#photo img').attr('src',$(this).attr("href")); $('#photo span').text($title); var mtop = (h/2)*(-1); var mleft = (w/2)*(-1); $('#photo img').css({"width": + w + "px" ,"height": + h + "px" , "top": "50%" , "left": "50%" , "margin-top": + mtop + "px" , "margin-left": + mleft+ "px"}); }); }); ////HTML//// <div id="contents"> <ul> <li><a href="1.jpg"><img src="1.jpg" title="あああああああああああああああ" /></a></li> <li><a href="2.jpg"><img src="2.jpg" title="いいいいいいいいいいいいいいい" /></a></li> <li><a href="3.jpg"><img src="3.jpg" title="ううううううううううううううう" /></a></li> </ul> </div> <div id="photo"> <img src="1.jpg" /> <span>テキストテキスト</span> </div>

  • jQueryの隣接セレクターが上手く動作しない

    jQueryを用いてギャラリーのページを作成しています。 ページのイメージは上部にサムネイル画像が並べてあり、その下にクリックされたサムネイル画像に対応する大きな画像を表示するというものです。その中で隣接セレクターが上手く動作せず悩んでいます。どなたか教えていただきたく、よろしくお願いいたします。 具体的には HTML部分 <\-- サムネイル部分 --> <div id="navi"> <ul> <li> <a href="images/img1.jpg"><imgsrc="images/img1_thum.jpg" alt="作品1" /></a>  </li> : : </ul> </div> <\-- 大きな画像表示部分 --> <div id="main"> <img src="とりあえず最初の作品のパス" alt="最初の作品"/> </div> jQuery部分 $(function(){ $("#navi a").click(function(){ var filename=$(this).attr("href"); var altname=$("+img",this).attr("alt"); : : ここで、filenameには a要素のhref属性の値が入るのですが、altnameが undefined になってしまいます。 私は $("+img",this).attr("alt");  で  this (この場合はa要素)の次のimg要素のalt属性 (たとえば「最初の作品」)が返ると考えているのですがなにが間違っているのでしょうか?

  • jqueryでhtmlを読み込んだ後に処理をさせる

    お世話になっております。 javascript初心者で最近、JQueryを使い始めた者です。 lightboxのようなモーダルウインドを作りたく、各ボタンのリンク先のファイルを読み込ませた後に フェードインで読み込ませた要素を表示させたいのですが 以下のソースでは #overLayerにaタグのリンク先のhtmlファイルを読み込ませた後にフェードインさせる処理がうまくいきません。 読み込ませるload1.htmlに画像を入れていると、フェードインしながら画像が読み込まれてしまいます。 画像付きhtmlファイルを画像データも含め完全に読みこみ終わった後に処理をするにはどのようにすればいいでしょうか? ご回答宜しくお願いいたします。 //*****javascriptコード**** <script type="text/javascript"> $(function(){ //bodyに背景レイヤーとボックス表示用のレイヤーを追加 $("body").prepend("<div id='glayLayer'></div><div id='overLayer'></div>"); //$("#overLayer").hide(); //ローディング画像のプリロード $("<img>").attr("src","images/loading.gif"); //背景レイヤークリック時の処理 $("#glayLayer").click(function(){ $(this).hide(); $("#overLayer").fadeOut("slow",function(){ $("#overLayer").html(""); }); }); //リンクボタンクリック時の処理 $("a.modal").click(function(){ $("#glayLayer").show(); $("#overLayer").show(); $("#overLayer").html("<img src='images/loading.gif'>"); $("#overLayer").data("file",$(this).attr("href")); $("#overLayer").load($("#overLayer").data("file"),function(){ //alert("complete"); $("#overLayer").hide(); $("#overLayer").fadeIn(1000); }); return false; }); }); </script> //****htmlソース**** <body> <ul> <li><a href="load1.html" class="modal">テスト1</a></li> </ul> </body>

  • jQueryで文字数カウンタ(複数対応)

    jQueryのプラグインを作成中です。 指定したテキストフォーム、テキストエリア内の文字数をカウントして、 指定場所に文字数を表示させるというものです。 下記のように記述し、 (function(jQuery) { jQuery.fn.textCount = function(options) { //キーボードが押された時にカウント jQuery(this).live("change keyup",function(){ var count = jQuery(this).val().length; var disp_area = jQuery(this).attr("id"); jQuery("."+disp_area).html(count+"文字"); }); return this; }; })(jQuery); jQuery(".counter").txtCount(); とHTML内で宣言しました。 <textarea id="sample">ここの文字数が</textarea> <div class="sample">ここに表示</div> と、ここまではうまくいきました。 が、テキストエリアの数が複数個あり、数が変動するため、IDを配列にしたいと思っています。 そこで、 <textarea id="sample[1]">個々の文字が</textarea> <div class="sample[1]">ここに表示されない</div> のように記述しました。 すると文字数が表示されなくなってしまいました。 classやidに配列指定はできないのでしょうか。 また、この場合はどのように宣言するのが正しいのでしょうか。