- ベストアンサー
Ajaxで作成したinputタグが正しく動作しない
- Ajaxで作成したinputタグが正しく動作しない問題についての質問です。
- 質問者は、元々htmlで作成してあるform内容をAjaxで送受信し、その得られたjsonデータを元に新規にテーブルを作成しています。
- しかし、テーブルにソートボタンを実装する際に問題が発生しており、質問者は解決方法を求めています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
何らかのライブラリを使用しているようですが、不明なのとスクリプトの全体像もHTMLの構成もよくわからないので、推測での回答になりますが… >作成したボタン(元のhtmlにあるボタンと同様の記述)は >元ページのphpに遷移してしまい 元のボタンへのソート機能の実装をどのようにして行っているのか不明ですが、推測するところ、よくあるパターンと同じで、イベントを設定していないだけではないのですか? ご提示のコードで生成しているボタンがそれであるのなら、ボタンより上位の要素(例えばドキュメントなど)でイベントを捕らえて処理するような実装になっていない限り作成したボタンは通常の機能となるはずです。 ソートの機能はスクリプトで実現しているのだと推測しますが、input要素を生成した際に、同時にバインドしておけばよいのではないでしょうか? 試しに、function(){ alert("fuga"); } のようなものを設定して動作するかどうか確認してみればわかるかと思います。 あるいは、イベント設定を先祖要素に設定するような方法に変えておけば、追加生成時にそれぞれにイベント設定を行わなくても済みます。(こちらの方がスマートな解決と言えるかも) ただし、ソート機能が追加されるテーブルの構成に対して汎用的に作られていないと、動作しても予定通りの結果は得られないかもしれません。 >元々ある検索ボタンと同様に非同期でpostするには ボタンの機能が、ソートなのかajaxなのか不明ですが、いずれにしろイベントのバインドさえできれば動作するのではないかと推測します。 もし、お使いのライブラリがjqueryであるのなら、後から生成した要素にも有効なlive()メソッドを利用してイベントを設定するという方法でもよろしいかも知れません。 推測で書いているので、当たるも八卦ですが…
お礼
情報提示が少ない中ご回答頂きありがとうございました。 live()メソッドにて解決いたしました。 $('.search_btn').click(function(){... ↓ $('.search_btn').live("click",function(){ 一旦全てのメソッドを覚えないと、スマートに使いこなせないと実感しました。これを機に、一通りの機能をテスト実装してから使用してみます。