0

タイトルはやや誤解を招くと思いますが、他にどのように言えばよいかわかりませんでした。

リンクをクリックしたときに小さなポップアップ ウィンドウが表示される機能があります (記事を削除するかどうかの確認メッセージ)。

また、データをphpファイルに投稿し、取得したデータ (記事のリストも) を div 要素に挿入する関数もあります。

最初にPHPで生成した記事のリストで削除確認の関数を使用しようとすると、すべてが機能しますが、 jqueryでdivに挿入した記事のリスト内の(本質的に同じ)リンクをクリックしようとすると、機能が動作していないようです (つまり、確認メッセージが表示されません)。

jsファイルのロード後にリンクが挿入されるためだと思いますが、後で挿入するものでも機能するように、この関数をグローバルにする方法はありますか?

$('.delete').click(function () {
    var link = $(this).attr('href');
    $('#dialog')
        .attr('title', 'Do you want to delete this article?')
        .text('If you click Delete, the entire article and all comments attached to it will be erased.')
        .dialog({
            buttons: {
                'Delete': function() { window.location.href = link; },
                'Cancel': function() { $(this).dialog('close'); }
            },
            closeOnEscape: true,
            draggable: false,
            resizable: false,
            show: 'drop',
            hide: 'drop',
            modal: true
        });
});
4

2 に答える 2

2

.on()jQuery のメソッド (マニュアル - jquery.com )を使用して、イベントをリッスンする必要があります。

その理由は、イベントに応答する必要がある新しい要素を動的に追加し始めたら、それらに反応するようにイベント リスナーに通知する方法が必要だからです。そして、.on()まさにそれを行います。

簡単な例は次のとおりです。

$("div.parent_of_button").on("click", ".class-of-button", function(event){
    $(this).text('clicked!');
});

.class-of-buttonこれが意味することは、ページの読み込み後に追加するクラスのすべての要素がクリックに応答するということです。

編集

.on()が動的に作成されたすべての要素の親にアタッチされている場合に役立つ場合があります。次に.on()、例のように、対象とする要素がメソッドの 2 番目の属性になります。

于 2013-05-26T17:05:12.143 に答える
0

リンクにイベントを添付する前に、JQuery ライブ機能を使用できます: http://api.jquery.com/live/

要素の共通の祖先でクリック イベントをリッスンし、対象の要素が期待するリンクであるかどうかを確認することもできます。

commonAncestor.click(function(e){
if('A'==e.target.nodeName)
    // do what you want to
});
于 2013-05-26T17:04:53.590 に答える