0

まず、コードは次のとおりです。

HTML:

<div id="foreground">
    <button type="button" id="go">Start</button>
</div>
<div id="background">
    <p>You are on the background</p>
</div>

JS:

$(function () {
    $("#go").click(function (e) {
        var $q = $(this);
        var $vazy = $('<button type="button" id="vazy"> Vazy </button>');
        var $loc = $('<input type="text" id="placename" placeholder="Location"/>');

        $vazy.insertAfter($q);
        $loc.insertAfter($q);
        $q.hide();

        e.stopPropagation();

    });

    $("#vazy").live("click", function () {
        alert('k');
        //$("#foreground").hide();
        //$("#background").show();
    });

});

CSS:

#background {
    display: none;
}

jsFiddle...

#vazy問題は 15 行目で、ライブ バインディングを使用しても、ID のボタンがクリック イベントに応答しないようです。何か不足していますか?

返信ありがとうございます:)

4

4 に答える 4

3

これを試して

    $("body").on("click","#vazy" function () {
    alert('k');
    //$("#foreground").hide();
    //$("#background").show();
});
于 2013-05-04T15:27:57.037 に答える
2

.live()は非推奨です..

.on()を使用してみてください:

$('body').on("click",'#vazy', function () {
    alert('k');
});

ここで動作します

于 2013-05-04T15:28:18.647 に答える
1

live は非推奨ですon()を使用して、イベントを動的に追加された要素にバインドします。イベントを要素またはドキュメントの親に委任できます。

ライブデモ

$(document).on("click", "#vazy", function () {
    alert('k');
    //$("#foreground").hide();
    //$("#background").show();
});

委任されたイベント

委任されたイベントには、後でドキュメントに追加される子孫要素からのイベントを処理できるという利点があります。委任されたイベント ハンドラーがアタッチされたときに存在することが保証されている要素を選択することで、委任されたイベントを使用して、イベント ハンドラーを頻繁にアタッチおよび削除する必要がなくなります。

于 2013-05-04T15:28:40.633 に答える
0

あなたの最善の策: {フォアグラウンドは最も近い静的コンテナです。デリゲートとして使用してください}

$("#foreground").on("click",'#vazy', function () {...});
于 2013-05-04T15:29:30.353 に答える