jQuery clone api не клонирует нативные события javascript - PullRequest
1 голос
/ 04 ноября 2011

Если я добавлю собственный обработчик событий к элементу, используя "element.onclick = function () {...};" Синтаксис, а затем я клонирую элемент с помощью jQuery clone api, используя параметр 'true', после чего клонированный элемент не получает обработчик событий, добавленный по-своему. Как я могу решить эту проблему, если обязательный синтаксис, который я использовал выше, является обязательным (поэтому, пожалуйста, не дайте мне ответ типа "use $ (element) .click (function (e) {...}); "и т. д.).

В коде:

РЕДАКТИРОВАТЬ: пожалуйста, проверьте jsfiddle: http://jsfiddle.net/86f96/

Ответы [ 2 ]

1 голос
/ 04 ноября 2011

На одной странице не может быть 2 элементов с идентификатором btn.

РЕДАКТИРОВАТЬ:

Я посмотрел на jsfiddle и, к сожалению, не могу придуматьдругое решение, кроме присоединения события click снова, после добавления clone

EDIT 2:

Это так же близко, как я получил, без изменения собственного события JS onclick,Так что если по какой-то причине вы не можете изменить ранее определенную функцию, это поможет:

var element = document.getElementById('element');
document.getElementById('element').onclick = function() { alert( 'clicked' ); };
//...
var clone = $(element).clone(true);
var native_click_function = $(element)[0].onclick;
$(element).remove();
clone.appendTo('body').click(function(){
    native_click_function();
});

Код взят из скрипта JS.

0 голосов
/ 04 ноября 2011

append и appendTo, чтобы не пропустить события. Некоторые видят в этом ошибку, другие видят в этом особенность, увы, единственный путь - использовать live () или переопределить события.

...