-1

我有一个编辑按钮,单击该按钮会触发下面的第一个事件。它(编辑表单)还有一个取消链接,单击该链接会触发下面的第二个事件。如何确保PrevContent在取消事件中可以访问该值?用户可以一次点击任意数量的相应编辑链接。

$('.js-profile-edit').live('click',function(){

    var TrBlock     = $(this).closest('tr');
    var PrevContent = TrBlock.html();
    var colspan     = TrBlock.parent().prev().find('a:first').first().data('span');

    $.ajax({
        url     : $(this).attr('href'),
        type    : 'GET',
        success : function(response){
            TrBlock.html('<td colspan="'+colspan+'">'+response+'</td>');
        },
        error    : function(jqXHR, textStatus, errorThrown){
            uiAlert({message : 'Something Broke. Try again later'})
        }
    });
    return false;
});


$('.js-profile-edit-cancel').live('click',function(){
    $(this).closest('tr').html(PrevContent);
    return false;
});
4

2 回答 2

1

也许您可以将其填充PrevContent到取消按钮的数据对象中。

js-profile-edit在点击处理程序中写入:

$('.js-profile-edit-cancel').data('PrevContent', PrevContent);

并读入js-profile-edit-cancel点击处理程序:

var PrevContent = $(this).data('PrevContent');
于 2012-06-01T19:08:18.977 回答
0

您应该能够将prevContentas存储.data()在最近的位置<tr>

$('.js-profile-edit').live('click',function(){

    var TrBlock     = $(this).closest('tr');
    var PrevContent = TrBlock.html();
    TrBlock.data({contents: PrevContent});  // save it
    ...
})

$('.js-profile-edit-cancel').live('click',function() {
    var TrBlock = $(this).closest('tr');
    TrBlock.html(TrBlock.data('contents'));
    return false;
});
于 2012-06-01T19:08:55.820 回答