2016-09-21 2 views
-1

div를 클릭하면 해당 divs 매개 변수의 매개 변수로 함수가 호출되고, 함수는 그냥 하드 코드 된 div id를 전송할 때 작동합니다. :div 함수를 전달할 때 이벤트 함수가 발생합니다.

$('#areaOne').on('show.bs.collapse', onSectionClick('#areaOne')); 


function onSectionClick(){ 
    var x = $('#areaOne).hasClass('toggled') ? 'false' : 'true'; 
    console.log(x) 
} 

그러나 나는이처럼하려고하면

$('#areaOne').on('show.bs.collapse', onSectionClick('#areaOne')); 


    function onSectionClick(secID){ 
    var x = $(secID).hasClass('toggled') ? 'false' : 'true'; 
    console.log(x) 
    } 

그런 다음 함수가 즉시 페이지가로드라고한다, 오히려 그 지역을 클릭 할 때. 같은 기능을 수행해야하는 영역이 많기 때문에이 방법으로 작업하고 싶습니다.

저는 Javascript에 매우 익숙해 져서 더 나은 방법으로이를 수행하는 방법에 대한 조언이나 도움을 주시면 대단히 감사하겠습니다.

+0

[jQuery의 .click - 사용자 함수에 매개 변수 전달] 가능한 복제본 (http://stackoverflow.com/questions/3273350/jquerys-click-pass-parameters-to-user-function) – Xufox

답변

3

문제는 함수 참조를 제공하는 대신 함수를 호출한다는 것입니다. 시도 : '#areaOne'를 전달

$('#areaOne').on('show.bs.collapse', function(){onSectionClick('#areaOne')}); 
1

라인

$('#areaOne').on('show.bs.collapse', onSectionClick('#areaOne')); 

전화onSectionClick을하고 on에 avlue의 반환, 정확하게 길을 통과 foo(bar())전화bar 및 반환 값을 전달 foo에 '하지만, 당신은 아마 돈, 귀하의 경우에는

$('#areaOne').on('show.bs.collapse', function() { onSectionClick('#areaOne'); }); 

: 당신이 이벤트에 의해 호출하도록 설정하려면

, 당신은 함수 참조가 아닌 기능을 호출, 예를 전달 심지어 그렇게하고 싶어. 대신 :

$('#areaOne').on('show.bs.collapse', onSectionClick); 
// Note no() -------------------------------------^ 

... 그리고 onSectionClick에서, (당신이 그것을 필요로하는 경우에 'areaOne'   —이 # 추가) 클릭 된 요소의 ID를 얻기 위해 this.id를 사용합니다.

그리고 당신은 당신이 또한 후크 할 다른 "영역"이있는 경우, 당신은 한 번에 최대 모두를 연결할 수 있습니다 :

$('selector-for-all-the-areas').on('show.bs.collapse', onSectionClick); 

... 다음과 같은 방법으로 이벤트에 관련되는 일을 알고 어떤 요소 thisonSectionClick을 나타냅니다.

+0

감사합니다. 도움이되었습니다. 이제 $ ('# areacontainer')가 있습니다. on ('show.bs.collapse', onSubSectionClick); 그러나 내가 영역을 클릭 할 때 개별 영역 div가 아닌 adjactainer의 ID를 얻습니다. – user2320239

+0

@ user2320239 : 예, 'this'는 항상 (효과적으로) 이벤트를 연결 한 요소이기 때문입니다. $ ("# areacontainer"). on ("show.bs.collapse", "selector-that-matches-the-subsection", onSubSectionClick); 이렇게하면 이벤트 위임을 던질 수 있습니다. 이벤트 후 셀렉터와 일치하는 요소. 간단한 예제 :'$ ("div"). on ("click", "span", function() {...});'핸들러에서 'this'는 클릭 된 div 내부의 스팬을 나타냅니다. . –

관련 문제