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
요소가 발생하고, 그것은 거품을 내며 위로 올라갑니다.#container
element 이벤트를 트리거한 element는 다음의 셀렉터 파라미터로 평가됩니다..on()
일치하는 경우 이벤트 핸들러가 실행됩니다.이벤트 위임은 이렇게 작동합니다.
요소 #container를 복제하는 경우 이벤트 및 데이터를 포함하여 다음과 같이 구성된 바인딩을 심층 복제해야 합니다..on()
보존될 것입니다
만약 당신이 사용한다면 이것은 필요하지 않을 것입니다..on()
의 부모로#container
.
언급URL : https://stackoverflow.com/questions/9549643/jquery-clone-not-cloning-event-bindings-even-with-on
'programing' 카테고리의 다른 글
치명적 오류: 'WP_Customize_Control' 클래스를 찾을 수 없음 - WordPress (0) | 2023.10.05 |
---|---|
Jasmine에서 "Controller as" 구문으로 스코프 변수를 사용하는 방법? (0) | 2023.10.05 |
VBA에서 간단한 문자열을 바이트 배열로 변환하는 방법은? (0) | 2023.10.05 |
화살표 함수로 '이것'을 묶을 수 있습니까? (0) | 2023.10.05 |
서명되지 않은 긴' 변수를 인덱싱하고 결과를 출력합니다. (0) | 2023.10.05 |