3

かなり基本的なもので、ボタンがあり、クリックすると変化します。ただし、変更後、.click()イベントは機能しませんが、既にページにある div で機能します

$('#editBioButton').click(function(){
       /* this captures html text and replaces it with textbox */
           var oldBio = $('.bioText').html();
        $('.bioText').replaceWith(' <textarea name="newBio" rows="6" cols="30" > ' + text + ' </textarea>');
       /* this switches button */
        $('#editBioButton').replaceWith(' <div id="saveBioText"> Save Changes </div> ');
       /* this div won't react when clicked */
        $('#saveBioText').click(function(){
           alert('itowrks');
        });

    });
4

5 に答える 5

3

私は前に同じ問題に遭遇しました。jQuery は、ロード後に追加された要素のすべてのバインディングを失うことが判明しました。delegateメソッドを使用する必要があります

$("#editBioButton").delegate("#saveBioText", 'click', function(){
  alert("this.");
});
于 2012-03-15T00:30:02.743 に答える
2
$('#editBioButton').click(function(){
    var oldBio = $('.bioText').html();
    $('.bioText').replaceWith(' <textarea name="newBio" rows="6" cols="30" > ' + text + ' </textarea>');
    $('#editBioButton').replaceWith(' <div id="saveBioText"> Save Changes </div> ');
    $(document).on('click', '#saveBioText', function(){
        alert('it works');
    });
});
于 2012-03-15T00:31:22.177 に答える
1

これを記述する好ましい方法は、次を使用することonです。

$(document).on("click", "#saveBioText", function() {
  alert('this');
});
于 2016-10-11T16:53:44.567 に答える
1

使用する:

$(selector).live('click',function(){ });
于 2012-03-15T00:30:47.543 に答える
1

クリックメソッドは、ページが読み込まれた後に追加された要素では機能しません。代わりに、クリックイベントでライブメソッドを使用できます。

$("#editBioButton").live('click', function(){
   ...
});
于 2012-03-15T00:33:15.077 に答える