2017-01-17 2 views
0

동적 생성 요소 목록을 클릭하면 Ajax 요청이 발생하고 결과가 표시됩니다. 문제는 두 번 클릭 할 때만 작동합니다. 요소를 처음 클릭해도 작동하지 않습니다. 반면 두 번째 클릭은 완벽하게 작동합니다. 나는 그 이유를 이해하지 못한다. 나는 unbind()을 시도했다하지만 난 여전히 일을 일부러 $("#profiles_name ul a").unbind().on('click',function(event)..을 시도 않았다동적으로 생성 된 요소에서 클릭 기능이 예상대로 작동하지 않습니다. Jquery

$("#profiles_name ul a").on('click',function(event){ 
     $.ajax({ 
    } 
    }); 
    });. 

도움이되지 않았다. 여기

내 동적으로 생성 된 태그입니다

또한
<ul> 
    <a href="javascript:myfunction(this)" data-value="20/20"><li>Frontend Dev</li></a> 
    <li class="divider"></li> 
</ul> 

예를 들어 내가이 개 동적으로 생성 된 목록이 난 목록 1 (처음)을 클릭하면이 작업 목록 1 (나던 경우,주의해야 할 두 번째 시간) 작동합니다. 페이지 새로 고침 후 목록 1 (처음)이 작동하지 않고 목록 2 (처음)가 작동합니다. 즉 동적으로 생성 된 요소와 관계없이 첫 번째 클릭은 작동하지 않습니다. .

$("#profiles_name").on('click', 'ul a', function() { 
    $.ajax({ 
     // Your code here 
    }); 
}); 

Event delegation:

Event delegation allows us to attach a single event listener, to a parent element, that will fire for all descendants matching a selector, whether those descendants exist now or are added in the future.

+0

그래 나를 위해 작동하는 것 같다 결코 그 대신이 시도 : – musefan

+0

Nope it worknt –

+0

완전한 예제를 보시려면 – musefan

답변

1

event delegation 사용 안함 ("# UL 인증을 profiles_name")에 ('클릭'`$ 'A' , 함수 (이벤트) {`
+0

아니요, 작동하지 않았 음 –

+0

성능이'document'를 사용하여 영향을받을 수 있다는 것을 명심하십시오. 모두 상황에 얼마나 복잡한 지에 따라 다릅니다. 대부분의 경우에는 눈치 채지 못할 것입니다. 가능한 경우 더 구체적인 정적 요소를 제공하는 것이 좋습니다. 예 :'$ ("# profiles_name") on ('click', 'ul a', function (event) {' – musefan

+0

@musefan 당신 말이 맞아요, 내 대답을 당신의 발언으로 업데이트합니다. –

관련 문제