2016-09-01 3 views
-1
$("#comic").click(function(){ 
    nextPanel(comic); 
}); 

nextPanel 기능을 클릭하여 두 번째에서 작동합니다. 그러나 요소는 두 번째 클릭까지 표시되지 않습니다 (기본값 : display : 'none'). 여기서 무슨 일이 일어나고있는거야?부분은

+1

'만화'개체의 구조를 게시 할 수 있습니까? 나는 만화 같아요. 패널은 초기화되지 않았으며 첫 번째 클릭에서 1 씩 증가 할 때까지 요소와 일치하지 않습니다. – derelict

+0

'PING'은 유효한 HTML 요소가 아니기 때문에 (아마도'display : none'이 브라우저에 의해 추가 되었기 때문입니다). 대신 요소 안에 래핑하려고 할 수 있습니까 (예 :'

PING
')? 어쨌든 jsfiddle.net을 사용하여 문제를 재현하고 여기에 링크를 게시하면 문제를 이해하는 데 도움이됩니다. –

+0

감사합니다. 나는 그 문제를 발견했다. 패널 적절성은 이미 표시된 패널을 가리키고 있습니다. 내가 고쳐야했던 것은 "comic.panel + = 1;"을 넣는 것이었다. 위의 한 줄. 나는 빌어 먹을 바보 야. –

답변

0

난 당신이로 변경해야한다고 생각 : 어쩌면 요소가 DOM에 존재하지 않는 당신이 존재하기 전에에가 someting을하려고하기 때문

$("#comic").on('click',function(){ 
    nextPanel(comic); 
}); 

이입니다. 위와 같이하면 올바르게 작동 할 수 있습니다. 아래에서 이것을 시도해보십시오.

$("body").on('click', "#comic",function(){ 
    nextPanel(comic); 
}); 
+0

on ('click', function() {..}) '은 OP의'$ ("# comic")과 똑같은 방식으로 작동합니다.() {...})'. 그러나 어떤 경우에는 요소를 클릭하면 'nextPanel()'함수를 호출하기 때문에 (* 첫 번째 클릭은 "PING"메시지를 표시하고 후속 클릭은 예상대로 작동 함) 문제가 있으므로 요소가 * 존재 *한다는 것을 알고 있습니다. 클릭 핸들러가 바인딩되는 방식에 포함되지 않습니다. – nnnnnn

+0

Nope. 그것은 이전과 같았고, 그것이 변화를 가져올지를보기 위해 주위를 바 꾸었습니다. 나는하지 않았다. –