我做了一个像twitter这样的社交网站。 当用户想要编辑帖子时,我打开一个div附加一个textarea,一个“保存”按钮和一个带有jquery的“取消”按钮。
但取消按钮只能工作一次,第二次用户点击编辑帖子时,取消按钮不再有效。
$(function()
{
function edit(chirp_id)
{
var div1 = $('<div></div>');
div1.addClass('thumb2');
div1.attr('id', chirp_id);
$(div1).css('display','none');
if($(div1).is(':visible'))
{
return;
}
else
{
// Before the 'cancel' button I append the textarea and 'save' button
var cancel = $('<button></button>');
cancel.attr("id","cancelEdit");
cancel.text("Cancel");
cancel.addClass('button');
cancel.appendTo(div2);
$('#cancelEdit').click(function()
{
$(div1).fadeOut("slow");
});
}
my_edit = edit;
});
我用javascript调用我的函数
function edit_chirp(chirp_id)
{
my_edit(chirp_id);
}
答案 0 :(得分:1)
使用 delegates
事件处理程序更好地使用.on
,因为您的div1是动态创建的
$(document).on('click', '#cancelEdit', function () {
$(div1).fadeOut("slow");
});
无法关闭edit
功能
答案 1 :(得分:1)
尝试这个..绑定事件与dom而不是ID ..
$(function () {
function edit(chirp_id) {
var div1 = $('<div></div>');
div1.addClass('thumb2');
div1.attr('id', chirp_id);
$(div1).css('display', 'none');
if ($(div1).is(':visible')) {
return;
} else {
//Before the 'cancel' button I append the textarea and the 'save' button
var cancel = $('<button></button>');
cancel.attr("id", "cancelEdit");
cancel.text("Cancel");
cancel.addClass('button');
cancel.appendTo(div2);
cancel.click(function () {
$(div1).fadeOut("slow");
});
}
my_edit = edit;
});
答案 2 :(得分:0)
可能与关闭有关。尝试:
cancel.click(function (event) {
$(event.target).closest(".thumb2").fadeOut("slow");
});