在删除按钮之前捕获按钮?

时间:2012-05-30 15:38:49

标签: jquery jquery-ui jquery-selectors

我创建了一个jsfiddle,因为我认为这是展示问题的最佳方式。基本上,脚本可以更改按钮,但在按钮更改后,标题不会更改。我假设是因为原来的按钮被替换了:

http://jsfiddle.net/cEu8f/5/

是否可以以某种方式捕获原始按钮,以便即使在删除按钮后也可以使用它来删除替换标题?

3 个答案:

答案 0 :(得分:3)

您可以cache outer_div元素(example);

$('#some_button').live('click', function() {
    some_function( $(this) );
});

function some_function( that ) {
    var $outer_div = that.closest('.outer_div');

    $outer_div
        .find('.main')
        .empty()
        .append( '<input type="button" id="some_other_button" value="click me 2" />' )
        .end()
        .find('.header')
        .empty()
        .append( "new header data" );
}

另请注意.end()功能。 ;)

答案 1 :(得分:1)

尝试更改您的功能,如下所示

function some_function( that ) {
    var $outerDiv = that.closest('.outer_div');
    $outerDiv.find('.main').empty().append( '<input type="button" id="some_other_button" value="click me 2" />' );    
    $outerDiv.find('.header').empty().append( "new header data" );
}

DEMO

答案 2 :(得分:0)

发生这种情况是因为当您从DOM中删除that元素时,它不再存在。但是,您可以“缓存”父div元素。

function some_function( that ) {
    var div = that.closest('.outer_div');
    div.find('.main').empty().append( '<input type="button" id="some_other_button" value="click me 2" />' );     
    div.find('.header').empty().append( "new header data" );
}​

DEMO: http://jsfiddle.net/cEu8f/7/