2011-04-26 4 views
0

У меня есть этот код:Создает ли clone() другую ссылку для обработчиков событий?

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('.classSelect').change(function() { 
      // somethings 
     }); 
    }); 
</script> 

и применяется ко всем .classSelect. Затем, если я клонирую некоторые из этих div, и я вставляю их на страницу, я вижу, что этот обработчик автоматически работает и для этих клонированных элементов.

Итак, каждый раз, когда я клонирую элемент, я создаю новую ссылку-обработчик для этого элемента? Или я ошибаюсь?

ответ

4

Метод .clone() принимает дополнительный булево параметр, позволяющий контролировать это поведение (следует ли клонирован события и данные):

withDataAndEvents: логическое значение, указывающее ли событие обработчики должны быть скопированы вместе с элементы. Начиная с jQuery 1.4, будут также скопированы данные элемента элемента данных: .

И в версии 1.5 есть второй аргумент, deepWithDataAndEvents:

deepWithDataAndEvents: Логическое , указывающий, должны ли быть скопированы обработчики событий и данных для всех детей клонированного элемента. По умолчанию его значение соответствует значению первого аргумента (по умолчанию это значение false).

Таким образом, при клонировании обработчиков событий элемента, прикрепленных к исходному элементу, будут выполняться также клонированные элементы.

+0

Uhm! Но это также работает, если я не добавляю никаких дополнительных параметров при клонировании элемента: O – markzzz

+0

@markzzz, какую версию jquery вы используете? –

+0

версия 1.5 – markzzz

Смежные вопросы