$(document)
에서 위임하는 것 외에 선택기와 일치하는 페이지의 모든 요소에 해당하는 jQuery를 사용하여 이벤트를 위임 할 수있는 방법이 있습니까? 선택기를 일치하는 모든 요소에 이벤트를 위임 jQuery.live
로jQuery 이벤트 위임 1.7.2
을 사용할 :
은 아마 가난하게 말로 이후로, 여기에 문질러입니다. 이것은 jQuery.delegate
에 의해 대체되었는데, 특정 컨텍스트 선택기 내의 이벤트를 자식에게 위임했습니다. 실제로는 jQuery.on
으로 대체되었지만 사실상 동일한 작업을 수행하지만 장면 뒤에서는 다른 비트를 사용했습니다 (상상해보십시오).
내가 원하는 것은 내 페이지의 모든 div.foo
에 안전하게 이벤트 처리기를 추가합니다.이 이벤트 처리기는 어디에 살릴지 또는 언제 살릴 수 있는지에 관계없이 안전하게 추가됩니다. 설명서 및 경험적 연구에 따르면 다음은 스크립트가 실행될 때 존재하는 요소 인 .foo
에만 바인딩됩니다. 나중에 .foo
요소를 페이지에 배치 할 수있는 코드가 있기 때문에 이것이 올바르게 작동하지 않습니다. live
이후
jQuery('.foo').on('click', handler);
은 (아마도 제거?)는 지원되지 않습니다, 나는 그것을 사용하지하기 위해 노력하고있어,하지만 내가 가지고 올 수있는 유일한 해결책은
jQuery(document).on('click', '.foo', handler);
입니다하지만 live
이 아니다 원래, 뒤에서 했나요? 요점을 더, 어떤 중요한 이유가 있습니까 이렇게하려면?
우리는 특별히 1.7.2 버전을 사용하고 있지만 일반적인 jQuery 응답도 도움이 될 것입니다. 그렇지 아주 성능이 좋은 때문에이 나쁜
jQuery(document).on('click', '.foo', handler);
그 이유는 다음과 같습니다
이것은 원래 '생방송'이었지만, 정확히 당신이 찾고있는 것입니다. 이상적으로는'document'가 아닌 다른 것을 사용하는 것이 좋습니다. 그러나 그것을 좁힐 수 없다면'document'만이 유일한 선택입니다. –
@JamesMontagne 네, 그만큼 의심합니다. 나는 stopPropagation이 일어날 가능성을 제외하고 문서에 다시 위임하지 않을 이유가 있는지 알지 못했습니다. –
또한 성능. 그것은 모든 방법을 버블 링해야하고 페이지의 모든 클릭을 잡아서 올바른 선택자인지 확인합니다. –