Проблема, когда элемент помещается в массив с использованием detach и добавляется к другому элементу с помощью jquery click, не работает - PullRequest
0 голосов
/ 09 августа 2011

Имея проблему, не могу объяснить, потому что не уверен, что происходит. Просто можно только упростить проблему в этом примере

Что происходит

Я временно помещаю элемент в массив, затем при повторном размещении событие click не появляется.

Как проверить

  1. Используйте кнопку «Нажми меня», появится предупреждение
  2. отсоединится, поменяет место
  3. появится кнопка "Нажми меня" в другом месте
  4. нажмите на кнопку «Нажми меня», не работает

Ответы [ 2 ]

2 голосов
/ 09 августа 2011

@ Ответ Шанкара в корне верен (+1), но есть лучший способ сделать это.Прямо сейчас вы:

  1. клонируйте элемент, затем
  2. удалите его, затем
  3. отсоедините его (что является избыточным, поскольку элемент был только что удален), затем
  4. Добавить его

Вместо этого вы можете просто .detach() элемент, который

совпадает с .remove(), за исключением того, что .detach() хранит все данные jQuery, связанные с удаленными элементами.Этот метод полезен, когда удаленные элементы должны быть повторно вставлены в DOM позднее.

Это будет работать примерно так:

var $div = $('#div').detach();
hidden.push($div);
$('#click').remove();
hidden.pop().detach().appendTo('#div1');

Демо: http://jsfiddle.net/mattball/swBfj/

2 голосов
/ 09 августа 2011

Вы должны передать true в метод clone, чтобы сохранить события.

Взгляните http://jsfiddle.net/7ZBtZ/2/

...