jQueryのpostで生成した要素を無限に有効に

このQ&Aのポイント
  • jQueryのpostで生成した要素を無限に有効にする方法を教えてください。
  • jQueryで生成したリンクを押すことによって$.postで生成したリンクで、.onを使って何回でもアラートが表示されるようにしたいです。
  • また、postするデータmessage: 'message'も何回リンクをクリックしても、送信されるようにしたいです。
回答を見る
  • ベストアンサー

jQueryのpostで生成した要素を無限に有効に

以下のような、jQueryのソースで、jQueryで生成したリンクを押すことによって$.postで生成したリンクで、.onを使って何回でもアラートが表示されるようにしたいのですが、1回目だけ出るのですが、それ以降は出ません。 何回でも出るようにするためには、どのようにすればいいですか。 また、postするデータmessage: 'message'も何回リンクをクリックしても、送信されるようにしたいです。よろしくお願いします。 $(function(){ $('#html').html("<a href='' onclick='return false' class='hello'>Hello</a>"); $('.hello').on("click", function(){ $.post("", { message: 'message', }, function(){ $('#html').html("<a href='' onclick='return false' class='hello'>Hello</a>"); alert('hello'); }); }); });

  • h_mp
  • お礼率97% (67/69)

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

  • ベストアンサー
  • tracer
  • ベストアンサー率41% (255/621)
回答No.1

1度しかできない理由は、onの箇所はページが読み込まれた時に実行されるためです。 つまり、最初に生成したa.helloに関してはonが定義されていますが、2度目以降に生成したa.helloにはonが定義されていません。 以下のようにjQueryのlive機能を使って、永続的にa.helloに対してonを定義することができますが、 $(document).on("click",".hello",function(){  alert('hello"); }); それ以前に、毎回a.helloを生成するという箇所に問題があると思います。 全体的な目的が分からないのでなんとも言えませんが、a.helloを一度だけ生成する仕組みにした方が明らかにスマートですし、そうすることで、今回の問題は解決されます。

h_mp
質問者

お礼

教えていただいたやり方でうまくいきました。 なんとなくわかったような気がします。 live機能調べてみたいと思います。 目的としては、リンクが押されるたびに、postを送信し、DBの行を削除して、もう一度全行を取得し、そのデータからHTMLを再生成というのをやりたくて、毎回、リンクが押されるたびにpostを実行したかったというものです。 大変詳しくありがとうございました。

関連するQ&A

  • jQueryでクリックされた要素のidを関数で取得

    以下のようなソースで、クリックされた要素のidをアラートで出したいとき、class: alphabetのa要素ををクリックすると、undefinedと出ます。 関数でthisを使うと呼び出し元のことを指さないので、クリックされた要素のidは出ないということなのですが、こういった場合、クリックされた要素のidを取得して、表示したい場合はどのようにすればよいか教えてください。 [htmlソース] <a class='alphabet' id='a' href='' onclick="return false;">A</a> <a class='alphabet' id='b' href='' onclick="return false;">B</a> <a class='alphabet' id='c' href='' onclick="return false;">C</a> <script src="jquery.min.js"></script> <script type="text/javascript"> $(function(){ $('.alphabet').click(function(){ function alertAlphabet(){ alert($(this).attr('id')); }; alertAlphabet(); }); }); </script>

  • jQueryのイベントに引数を渡したい

    例えば以下のような既存のJavaScriptのコードをjQueryのイベントで書き直したい場合、関数の引数で渡していた値は、どうやって渡すのでしょうか? 【html】 <a href="" onclick="func_a('abc'); return false;"></a> 【JavaScript】 faunction func_a(param_a){ alert(param_a); } 以下のようにすれば渡せないことはありませんが、かなり強引な感じがします。 【html】 <a href="" class="abc"></a> 【jQuery】 $(function() { $("a").click( function(){ var param = $(this).attr("class"); alert(param); return false; } ); }); こういう場合はjQeuryであっても、onclick属性で関数を呼び出すのが普通なのでしょうか? ご存知の方がいらっしゃいましたら教えてください。 よろしくお願い申し上げます。

  • jqueryについて

    jqueryについて こんな内容のjqueryをひとつにまとめて、なおかつ01~99(実績数)までのidを割り振る設定したいのですが可能でしょうか? 例えば $(function(){ $("#navi01-99 a").click(function(){ $("#main01-99 img").attr("src",$(this).attr("href")); return false; }); みたいな感じであとはidに番号を付ければいいみたいな・・・出来ませんでしょうか? 用途は仕事の制作実績で使用したいのですが、どなたか教えていただけますでしょうか? $(function(){ $("#navi01 a").click(function(){ $("#main01 img").attr("src",$(this).attr("href")); return false; }); }); $(function(){ $("#navi02 a").click(function(){ $("#main02 img").attr("src",$(this).attr("href")); return false; }); }); $(function(){ $("#navi03 a").click(function(){ $("#main03 img").attr("src",$(this).attr("href")); return false; }); }); $(function(){ $("#navi04 a").click(function(){ $("#main04 img").attr("src",$(this).attr("href")); return false; }); }); $(function(){ $("#navi05 a").click(function(){ $("#main05 img").attr("src",$(this).attr("href")); return false; }); });

    • ベストアンサー
    • AJAX
  • jqueryについて【初歩】

    見ていただきありがとうございます。 jqueryについて初歩的な質問です。 下記の記述は ひとつのボックスに対して内包するaタグのリンクを指定してボックスごとリンクにしているスクリプトになりますが、これにtargetの属性を付加させたいです。 しかしいろいろ試しましたがうまくいかず、ツンでます… jqueryに精通している方宜しければご回答いただけませんでしょうか? よろしくお願いいたします。 $(function(){ $(".sampleBox").click(function(){ window.location=$(this).find("a").attr("href"); return false; }); });

  • jQuery.jTagging.jsを使った入力

    現在、jQuery.jTagging.jsを使った入力支援を 以下のサイトを参考に作っています。 http://phpjavascriptroom.com/exp3.php?f=include/ajax/jquery_plugin_other/jtagging.inc&ttl=%E8%A8%AD%E7%BD%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB 上記サイトの例のようにテキストボックスだと、問題なく動作するのですが テキストエリアにすると動作しません。 以下、上記サイトを基にして、テキストエリアでテストしたコードです。 <script type="text/javascript"> $(function() { $("#TagTextArea1").jTagging($("#TagDiv1"), ","); }); </script>   ・   ・   ・ <h2>例1</h2> <p>your tags: <textarea id="TagTextArea1"></textarea> カンマ区切り</p> <div id="TagDiv1" class="box"> <a href="#" onclick="return false;">javascript</a>&nbsp;&nbsp; <a href="#" onclick="return false;">jquery</a>&nbsp;&nbsp; <a href="#" onclick="return false;">tag</a>&nbsp;&nbsp; <a href="#" onclick="return false;">cool</a> </div> jQuery.jTagging.jsを使用した入力支援は テキストエリアでは、実装することは不可能なのでしょうか?

  • jQueryでloadしたページ内でもjQueryを使う方法

    例えば、base.html内にjQueryでadd.htmlをloadします。 base.htmlに下記コードを記述 $(document).ready(function(){  $("a").click(function(){   alert("click");   return false;  }); }); base.htmlに直接記述したaタグではアラートが出ますが、 base.htmlに読み込んだadd.html内のaタグでは適用されません。 Ajaxで読み込んだページ内にもjQueryを使用したい場合には、 どのようにすればよいのでしょうか?

  • jQueryについて教えてください

    http://www.skuare.net/test/jFloatingmenu.html こちらのサイトを参考に製作をしたのですが <div id="floatMenu"> <ul> <li><a href="#" onclick="return false;">メニュー1</a></li> <li><a href="#" onclick="return false;">メニュー2</a></li> </ul> </div> こちらの部分をテキスト表示だと表示されるのですが メニューを画像(CSSを使ったロールオーバー)にすると 点線のみ表示され、画像が表示されなくなります。 <ul> <li class="category1_1"><a href="#" target="_parent">メニュー1</a></li> <li class="category1_2"><a href="#" target="_parent">メニュー2</a></li> </ul> 原因がわかりません 教えていただけませんでしょうか?

  • jqueryで出力した際に

    ファイルのアップロード削除で、jqueryとphpを使っています。 ・index.php メインのphpです。 ここで外部jsを読み込んだりその他の処理をしています。 ・upload.phpの最終処理 echo '<a href="#" class="unlink">削除する</a>'; ・外部jsの処理 $(function(){ // ファイルのアップロード $('input:file').change(function(){ $(this).upload('upload.php',function(res){ $(this).parent().next('.thumb').text('').append(res); },'html'); }); // ファイルの削除 $('.unlink').click(function(){ alert('unlink'); return false; }); }); index.phpに「echo '<a href="#" class="unlink">削除する</a>';」と書いて出力すると、jsが動作してアラートが表示されますが、upload.phpで出力するとアラートがでません。 原因がわからないのですが、メインファイルに書けば動作するのでjsを噛ませていることが原因かと思っています。 出力されたHTMLを見てもclass属性が出ていますし、jsの読み込みを絶対パスにしても駄目でした。外部CSSは効いているようですし謎です・・・ どうしたらいいのでしょうか?

  • jqueryのコードについて

    $(function () { $("親要素").click(function () { window.location = $(this).find("a").attr("href"); return false; }); }); 上記jqueryのコードで 子要素のリンクを親要素に適用させていますが、 子要素にリンクがない場合も親要素にリンクが適用され クリックすると・・・/undefined にとばされます。 子要素にリンクがない場合は 親要素にリンクを適用しなようにするには どうしたらいいでしょうか。 お願いいたします。

  • 関数の実行ができません

    function printData($str) { print("alert($str)"); return true; } print("<td><a href=\"#\" onClick=\"alert($i);return false\">$i</a></td>\n"); 上記を参考に関数(printdata)の呼び出しをおこなったの ですがうまく呼び出しできません。 print("<td><a href=\"#\" onClick=\"new Function($this->printdata($i))\";return false\">$i</a></td>\n"); どなたかご存知でしたら教えてください。 よろしくお願い致します。

    • ベストアンサー
    • PHP

専門家に質問してみよう