Захват кнопки перед ее удалением?

101
16

Я создал jsfiddle, поскольку я думал, что это будет лучший способ показать проблему. В принципе, скрипт может изменить кнопку, но после изменения кнопки заголовок не изменяется. Я предполагаю это, потому что исходная кнопка была заменена:

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

Можно ли каким-то образом захватить исходную кнопку, чтобы ее можно было использовать для удаления, замените заголовок даже после того, как кнопка была удалена?

спросил(а) 2021-01-19T19:44:52+03:00 6 месяцев назад
1
Решение
89

Вы можете кэшировать элемент outer_div (пример);

$('#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(). ;)

ответил(а) 2021-01-19T19:44:52+03:00 6 месяцев назад
64

Попробуйте изменить свою функцию, как показано ниже,

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

ответил(а) 2021-01-19T19:44:52+03:00 6 месяцев назад
45

Это происходит потому that что that элемент больше не существует, когда вы удаляете его из DOM. Однако вы можете "кэшировать" родительский элемент 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" );
}​

ДЕМО: http://jsfiddle.net/cEu8f/7/

ответил(а) 2021-01-19T19:44:52+03:00 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема