0

皆さん、こんにちは、私はここでちょっと混乱しています。jQueryを使用して要素を置き換えていますが、replaceWith();うまく機能します。ただし、変換後、クリック可能な要素は機能しなくなります。これが私のコードです

4

2 に答える 2

2

これは、要素を置き換えるとイベント バインディングが失われるためです。replaceWith()基本的に、要素とそのすべてのイベント バインディングを削除してから、新しい要素に置き換えます。イベント バインディングは保持されません。

代わりに使用してクリック イベントをバインドします.on()

$('.menu').on('click', 'a', function() {
   ...
});

更新されたフィドル: http://jsfiddle.net/RTPhR/1/

于 2013-08-13T17:14:49.520 に答える
0

http://jsfiddle.net/RTPhR/5/ イベントをリンクではなくメニューにバインドします。

$(document).ready(function() {
    $('.menu').on('click','a',function() {
        var $this = $(this),
            element = $this.attr('name');

        if (element == 'opt1') {
            alert('opcion 1');

        } else if (element == 'opt2') {
            alert('opcion 2');
            $this.replaceWith("<a href='#' name='cerrar'>VOLVER</a>");

        } else if (element == 'cerrar') {
            alert('close!');
        }
    });
});
于 2013-08-13T17:27:46.027 に答える