programing

jQuery clone() 이벤트 바인딩을 복제하지 않음(on()이(가) 있는 경우에도)

powerit 2023. 10. 5. 23:34
반응형

jQuery clone() 이벤트 바인딩을 복제하지 않음(on()이(가) 있는 경우에도)

모바일 웹 애플리케이션에서 사용할 수 있도록 일련의 사용자 지정 jQuery 이벤트를 만들었습니다.그들은 잘 작동하고 테스트를 받았습니다.하지만 제가 이해하기 어려운 작은 문제에 부딪혔습니다.

사용중입니다.clone()버튼을 포함하는 DOM 내의 몇 가지 요소에 적용할 수 있습니다.버튼에는 일부 사용자 지정 이벤트가 바인딩되어 있습니다(이벤트는 다음을 사용하여 바인딩됨)..on()), 하지만 아쉽게도 jQuery's를 사용할 때.clone(), 바인딩이 보존되지 않아 다시 추가해야 합니다.

전에 이것을 경험한 사람이 있습니까, 잠재적인 해결책을 아는 사람이 있습니까?제가 생각하기에..on()현재 또는 미래에 존재하는 요소들에 대한 구속력을 보존하기로 되어있었습니까?

.clone() 메서드의 오버로드를 사용해야 할 것 같습니다.

$element.clone(true, true);

clone([DataAndEvents 포함] [, deepWithDataAndEvents] )

WithDataAndEvents: 이벤트 핸들러 및 데이터를 요소와 함께 복사해야 하는지 여부를 나타내는 부울입니다.기본값은 false입니다.

deepWithDataAndEvents: 복제된 요소의 모든 자식에 대한 이벤트 핸들러 및 데이터를 복사해야 하는지 여부를 나타내는 부울입니다.기본적으로 첫 번째 인수의 값과 일치합니다(기본값은 false입니다).


주의하세요..on()는 실제로 이벤트를 대상에 바인딩하는 것이 아니라 위임할 요소에 바인딩합니다.그렇다면 다음과 같이 하십시오.

$('#container').on('click', '.button', ...);

이벤트는 실제로 다음과 같이 구속됩니다.#container. 클릭할 때.button요소가 발생하고, 그것은 거품을 내며 위로 올라갑니다.#containerelement 이벤트를 트리거한 element는 다음의 셀렉터 파라미터로 평가됩니다..on()일치하는 경우 이벤트 핸들러가 실행됩니다.이벤트 위임은 이렇게 작동합니다.

요소 #container를 복제하는 경우 이벤트 및 데이터를 포함하여 다음과 같이 구성된 바인딩을 심층 복제해야 합니다..on()보존될 것입니다

만약 당신이 사용한다면 이것은 필요하지 않을 것입니다..on()의 부모로#container.

언급URL : https://stackoverflow.com/questions/9549643/jquery-clone-not-cloning-event-bindings-even-with-on

반응형