这是非常基本的,我有一个按钮,当你点击它时,它会改变。但是在更改之后,.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');
});
});
答案 0 :(得分:3)
之前我遇到过同样的问题。原来jQuery丢失了加载后添加的元素的所有绑定。您应该使用delegate
方法
$("#editBioButton").delegate("#saveBioText", 'click', function(){
alert("this.");
});
答案 1 :(得分: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');
});
});
答案 2 :(得分:1)
使用:
$(selector).live('click',function(){ });
答案 3 :(得分:1)
点击方法不适用于已加载页面后添加的元素,而是可以使用实时方法点击事件
$("#editBioButton").live('click', function(){
...
});
答案 4 :(得分:0)
写这个的首选方法是使用on
:
$(document).on("click", "#saveBioText", function() {
alert('this');
});