1

phpスクリプトからHTMLをアッピングするjQueryがいくつかあります。

jQuery

$.ajax({
    type: "POST",
    url: "newPage.php",
    data: data,
    cache: false,
    success: function(html)
    {
        $('.item1 ul').append(html);
    }
});

PHP

    echo"<li><a href=\"#\">".$pages["title"]."<img src=\"images/delete.jpeg\" class=\"delete del-page\" id=".$pages["pages_id"]." title=\"Delete Page\"/><img src=".$state." class=\"page-state\" id=".$pages["pages_id"]." title=\"Page On\"/></a></li>";

追加後、新しいHTMLではjQueryイベントは機能しません。

4

2 に答える 2

4

イベントを委任する必要があります.on()

あなたはここでこれについて具体的に読むことができます

ただし、基本的には、リスナーをDOM階層の上位にアタッチする必要があります。

だからこれの代わりに...

$('.selector').on('event', function(e) {...});

これを行う

$('.item1 ul').on('event', '.selector', function(e) {...});

なんで?

これが機能するのは、イベントをバインドしたときにまだページにない動的要素が引き続きイベントを発生させ、ハンドラーがないためです。

イベントバブリングのおかげで、ツリーの上のすべてのDOM要素は、子孫のイベントを聞き(伝播が停止されていない限り)、それに応じてアクションを実行できます。

この例では、子要素の1つからトリガーされたと'.item1 ul'聞いたときに、それがトリガーされた場合、ハンドラーが起動します。'event''.selector'

于 2013-02-08T23:55:32.843 に答える
3

おそらく、イベントを要素にバインドしています。

$('button').click(function() {
    ...
});

これは、$('button')セレクターが必要な要素を返す場合にのみ機能します。問題は、セレクターが1回呼び出されることです。セレクターが呼び出された後に作成された要素を考慮して更新されません。

イベント委任構文を使用して、イベントをすでに存在する親要素にバインドする必要があります。

$('#parent').on('click', 'button', function() {
    ...
});

そうすれば、#parent受信者がclickイベントを受信すると、一致する要素を探してbutton、イベントをそれらに渡します。

于 2013-02-08T23:56:17.803 に答える