2017-03-21 1 views
-2

DOM 요소에 class = "divhide"를 $ .getJSON으로 추가했습니다.()에 라이브 이벤트가 작동하지 않습니다.

는 이제 클래스 = "제목"많은 DIV를하고 난 이벤트를 추가 할 수 있지만이 작동되지 않습니다

$('.title').on("click",'div.divhide' , function() { 
    var description = $(this).find('.divhide') 
    description.slideToggle(); 
}) 

나는 또한해서 getJSON의 클래스 = "제목"을 추가합니다.

+3

이벤트를 첨부하려고 할 때'.title'이 DOM에 없거나 이벤트를 발생시킨'.divhide' 요소가 중첩되어 있지 않습니다. 내 돈은 후자에 달렸어. 확신을 얻으려면 HTML을보아야합니다. –

+0

또한 getjSON에 .title 요소를 추가 했습니까? 그것 같이 소리가 난다. –

+1

스택 오버플로에 오신 것을 환영합니다. 어떤 항목이 정적이고 어떤 항목이 동적인지 더 많은 컨텍스트를 제공 할 수 있습니까? – Twisty

답변

0

클릭 핸들러가 추가 된 후 개의 요소를 getJSON을 통해 추가하는 경우 처리기가 새 요소에 연결되지 않습니다.

처리기를 적용 할 때 요소가 있어야합니다. 그래서 위임을 사용합니다. 당신이하지 않을 수

$('body').on("click",'div.divhide' , function() { 
    var description = $(this).find('.divhide') 
    description.slideToggle(); 
}) 

이것은 (아마도 현명하지 등) 극단적 인 예입니다 : 즉, 항상 존재, 또는 최소한 핸들러 코드가 적용될 때 존재하는 부모 요소에 대한 핸들러를 첨부 페이지의 모든 클릭을 필터링하고 싶습니다. 그러나 본문이 항상 존재하므로 각 클릭 및 필터를 처리하여 초기 클릭이 div.divhide인지 확인합니다.

대신 호출에 의해 수정되지 않고 처리기를 적용 할 때 존재하는 .title div의 부모를 찾으십시오.