2013-10-24 6 views
0

WinJS를 사용하여 Windows 8.1 Store 응용 프로그램을 구축 중입니다. 사용자가 검색어를 입력하면 <p class="searchresults">content</p> 태그에 검색 결과가 표시됩니다.클릭 이벤트가 요소에서 발생하지 않습니다.

.searchresults 클래스에 이벤트 처리기를 추가하고 싶습니다.

$('.searchresults').on('click', function() { 
console.log("clicked"); 
}); 

내가 해봤에도 이벤트가 발생하지 없구요 그러나

$('.searchresults').click(function() { 
console.log("clicked"); 
}); 

.on() 않은 : 나는 다음과 같은 일을했습니다. 나는 중단 점을 설정 한, 그래서 화재 때 볼 수 있습니다 -하지만 그건 결코 내가 WinJS 방법을 통해 이벤트 처리기를 추가하려고했습니다

발생하지 :

Microsoft.Maps.Events.addHandler(document.getElementsByClassName("searchresults"), 'click', myfunc); 

성공없이.

왜 이런 생각입니까?

답변

3

이벤트 처리기 (동적 내용에 공통적 인 문제)를 설치하려고 시도한 후에 <p class="searchresults">content</p> 개체를 생성한다고 생각합니다. 이벤트 핸들러를 추가하려고하면 DOM 오브젝트가 존재하지 않으므로 정상적인 이벤트 핸들링에서는 작동하지 않습니다. 이 경우

는, 다음과 같이 처리 위임 된 이벤트를 사용해야합니다

$(document.body).on('click', '.searchresults', function() { 
    console.log("clicked"); 
}); 

이 동적으로 언제든지의 SearchResult의 내용과 여전히 이벤트를 통해 실행됩니다 이벤트 처리기를 만들 수 있습니다 위임 (이벤트는 부모에게 전파됩니다).


당신은 검색 결과의 콘텐츠에 HTML을 표시하지 않은,하지만이 작업을 수행 할 수있는 가장 최적의 방법은 이미 검색 결과에 가장 가까운 정적 부모 (동적으로 생성되지 않은 부모를 선택하는 것입니다 이벤트 처리기를 첨부 할 때) 다음 이벤트를 첨부하십시오.

$(closest static parent selector).on('click', '.searchresults', function() { 
    console.log("clicked"); 
}); 
+0

완벽하게 작동합니다. – PeterInvincible

관련 문제