2013-04-29 3 views
0

많은 e.stopPropagation이있는 페이지가 있으므로 함수를 작성하기로했습니다. 여기 코드입니다stopPropagation 함수 읽기가 정의되지 않았습니다.

function stopProp(name) { 
if($(e.target).hasClass(name)) { 
    e.stopPropagation(); 
    } 
} 

콘솔에서 매번 작동하지 않는 것처럼 보이지만 stopProp은 정의되지 않았습니다.

여기이 작동되지 않는 이유

$('#chatting').on('click','.chatheader',function(e){ 
    if($(e.target).hasClass('setting')) { 
     e.stopPropagation(); 
     } 
    } 
}); 

누구든지 나를 알아 내기 위해 도움을 줄 수있는 기능으로 전환하기 위해 노력하고 실제 JS이며 어떻게 이것에 대해 가야하나요? 함수로 변경하는 것이 매우 쉽다는 것을 알아 냈으므로 stopProp('setting');을 쉽게 쓸 수 있습니다. 여기서는 그렇지 않습니다.

+0

당신이 다른 대답에 내 의견을 참조하시기 바랍니다 수있는 자바 스크립트 코드 – Ejaz

답변

1

click 이벤트의 처리기는 이벤트가 될 단일 인수를 반환해야합니다. 당신은 stopProp 방법에 event 개체를 전달할 필요가

$('#chatting').on('click','.chatheader',stopProp('setting')); 

function stopProp(name) { 
    return function(e) { 
    if($(e.target).hasClass(name)) { 
     e.stopPropagation(); 
    } 
    } 
} 
+0

을 완료 게시하시기 바랍니다? .on()의 함수를 작성하여 지정된 요소에 대해 수행해야 할 작업을 수행하는 방법을 알고 싶습니다. – EasyBB

1

: 그래서 당신은 다음과 같은 예를 들어, 이벤트를 반환하는 기능을 가져야한다.

function stopProp(e) { 
    if($(e.target).hasClass(e.data.className)) { 
     e.stopPropagation(); 
    } 
} 

그런

$('#chatting').on('click', '.chatheader', {className: 'setting'}, stopProp); 

데모 : Fiddle

+0

이렇게하면 매우 이상하게 보입니다. 클릭 한 번으로 뭔가를하고 싶습니다. '$ ('# 채팅 ').'$ (this) .fadeOut(); }); '그럼 어떻게하면 좋을까요? 고 말했다. $ (this) .fadeOut(); });'$ { 'chatting'}. ? – EasyBB

+0

'$ ('# chatting ').을 사용하여'click ','.chatheader ', {className :'설정 '}, stopProp) .on ('클릭 ', function() {$ (this) .fadeOut);}); ' –

+0

오, 기본적으로 같은 무게입니다. – EasyBB

관련 문제