我的按钮的jquery事件处理程序只能运行一次

时间:2013-10-15 12:17:21

标签: javascript jquery html

我做了一个像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);
}

3 个答案:

答案 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");
});