2

Web ページの冒頭で定義されている JavaScript 関数があります。テーブルで行がクリックされると呼び出されます。

ここに私の機能があります:

    $(".info").click(function(){
        alert($(this).attr('movieid'));
    });

ここに私のテーブル行がどのように見えるかがあります:

<tr class="info" movieid="123"><td>movie title</td></tr>

ページを最初にロードしたときにテーブルが表示されるようになったので、行をクリックすると、関数が正しく呼び出されます。テーブルの検索機能を実装しようとしています。上記のようにphpスクリプトがテーブルの行を返すようにしました。それらをテーブルに追加しましたが、phpスクリプトから返された行をクリックすると、javascript関数が呼び出されません。これを達成する方法を知っている人はいますか?運がなかった。

編集

検索結果を取得するための私の関数は次のとおりです。

$.ajax({
        type: "POST",
        url: "www.mysite.com/core/search.php",
        data: { q: search_string},
        cache: false,
        success: function(html){
            $("table#movies").fadeOut();
            $("div#results-container").fadeIn();
            $("div#results").fadeIn();
            $("div#results").html(html);
        }
});
4

7 に答える 7

2

要素を動的に追加しているため、クリック ハンドラーを設定しても登録されません。

$("body").on("click", ".info", function(e) {
   ...
});

body通常は機能しますが、理想的には、DOM 要素をセレクター.infoのできるだけ近くに配置する必要があります。

于 2013-03-28T04:31:00.607 に答える
1

ドキュメントに追加.onしてdocumentいるため、追加DOMします。

$(document).on('click',".info",function(){
       alert($(this).attr('movieid'));
});
于 2013-03-28T04:33:10.060 に答える
1

これを行う必要があります:

$("body").on("click", "tr", function(event){
    alert($(this).attr('movieid'));
});

「コンテナ」を追加することで、 のような効果が得られ.live()ます。

于 2013-03-28T04:21:43.363 に答える
1

j クエリ準備完了イベントを使用する

$(document).ready(function() {    
    $(".info").on("click", "tr", function(event){
       alert($(this).attr('movieid'));
   });
});
于 2013-03-28T04:27:27.263 に答える
0

皆さんからの助けに感謝します。私はそれを理解することができました.. @jasenは、ボディタグとして宣言するように言及しました. これが私が使用できた解決策です:

$("body").on("click", ".info", function(event){
   alert($(this).attr('movieid'));
});

デレクもありがとう..将来のためにいくつかの有用な例を提供してくれました。

于 2013-03-28T04:32:47.923 に答える
0

まず、すべてのtr.infoノードが現在および将来含まれるセレクターを指定します。投稿の最新の編集から、それはtable#movies.

次に、イベントをアタッチしonて、子セレクターを指定しますtr.info

$('table#movies').on('click', 'tr.info', function () {
    alert($(this).attr('movie'));
});

jsFiddle の例を参照してください

于 2013-03-28T04:34:12.530 に答える
0

あなたのphpスクリプトは、テーブルの行にクラスを追加していない可能性が最も高いです。それを変更してそのクラスを追加します。

于 2013-03-28T04:17:43.983 に答える