2013-08-29 5 views
8
<script> 
    $(document).ready(function(){ 
    //Load City by State 
    $('#billing_state_id').live('change', function() { 
     //do something 
    }); 
    $('#click_me').live('click', function() { 
     //do something 
     //need to recall $('#billing_state_id').live('change', function() { but how? 
    }); 
    }); 
</script> 

로드시 다른 함수에서 함수를 호출하지만 난 $('#click_me').live('click', function() 같은 다른 함수 내에서 호출하는 것이 가능 여부를 모르거나하지 않는 방법에 대해 설명합니다.잘 작동 국가가 jQuery를

+1

'.live'이되지 않습니다, 사용'on' (매우 설명, 그것은에 매뉴얼 페이지를 확인한다. 또한, jQuery를 그냥 자바 스크립트입니다 .. JS –

+1

과 같은 다른 지점에서와 같이 함수를 호출하면 live()에 대해 on() 함수를 사용하는 것이 좋습니다. 라이브는 더 이상 사용되지 않습니다. –

+0

글쎄, 내 대답을 복원하기로 결정했습니다. 사실, 나는 왜 내가 다른 사람이 아닌 동안 나는 공평해야하는지 모른다. 또한,이 질문에 너무 많은 downvotes가 있으며 그것에 대한 좋은 이유가 표시되지 않습니다. – leaf

답변

9

이벤트를 리 바인드하고 싶지는 않지만 핸들러를 호출한다고 가정합니다.

당신은 이벤트를 트리거 trigger()를 사용할 수 있습니다

$('#billing_state_id').trigger('change'); 

핸들러는 이벤트 컨텍스트에 의존하지 않는 당신이 이벤트에 대한 다른 핸들러를 트리거하지 않으려면, 당신은 또한 기능의 이름을 수 :

function someFunction() { 
    //do stuff 
} 

$(document).ready(function(){ 
    //Load City by State 
    $('#billing_state_id').live('change', someFunction); 
    $('#click_me').live('click', function() { 
     //do something 
     someFunction(); 
    }); 
    }); 

또한 live()이되지 않습니다주의, on()는 새로운 섹시한 레이저입니다.

지금
$(window).resize(resize=function resize(){ some code...} 

유 (크기를 호출 할 수 있습니다) 다른 중첩 된 함수 내에서 : 당신이 뭔가를 원하는

<script> 
    function myFun() { 
     //do something 
    } 

    $(document).ready(function(){ 
    //Load City by State 
    $(document).on('change', '#billing_state_id', function() { 
     myFun(); 
    }); 
    $(document).on('click', '#click_me', function() { 
     //do something 
     myFun(); 
    }); 
    }); 
</script> 
+0

더 나은 방법은 익명이 아닌 명명 된 함수를 만드는 것이다. 이벤트에 연결된 다른 모든 핸들러도 트리거됩니다. –

+0

그것은 의도에 따라 다릅니다. 어쩌면 이벤트에 첨부 된 다른 핸들러를 트리거해야 할 수도 있습니다. –

+0

그럴 가능성은 있습니다 만, OP가 질문에서 그의 설명을 통해 얻으려고하는 것처럼 보이지 않습니다. –

2

랩은 다른 함수에 코드를 공유 :

$(window).scroll(function(){ resize();} 
+1

왜 다른 함수로 함수를 래핑 하시겠습니까? 'click', myFun) 할 수도 있고,'.live'는 더 이상 사용되지 않습니다. –

+2

@BenjaminGruenbaum : 깨끗한 디자인입니다. (이벤트가 전달되기를 기다리는 대신) 이벤트 핸들러를 명시 적으로 호출하면 사용자 상호 작용 (사용자가 그렇게 말하고 싶다면 '비즈니스 로직')을 처리하지 않고 이벤트의 의미와는 독립적 인 일부 기능이 강하게 힌트됩니다. 이 코드 부분을 이렇게 분해해야한다. 나중에이 이벤트에 특이한 'change'이벤트 핸들러에 더 많은 처리를 추가한다고 상상해 보라. 다른 코드 부분에서 핸들러를 직접 호출하면 감지하기 어려운 방식으로 애플리케이션이 중단됩니다. – collapsar

+0

나는 당신이 내가 말하려고했던 것을 뒤섞어 놓았다고 생각한다. 나는 .click() 또는 .change()를 사용하여 수동으로 이벤트를 트리거해야한다는 것을 의미하지 않았다. (다른 answeR에 대한 나의 코멘트를 보라). myFun은 함수이기 때문에 다른 것 (익명의 함수 표현식)으로 감싸고 있기 때문에 내가 말하는 것은 function() {myFun()} 대신에'myFun'을 쓰는 것입니다.) 내가 말했던 두 번째 것은'.live'가 (필자가 정확하게 호출하면 jQuery 1.7 이후로) 더 이상 사용되지 않으며 새로운 코드에서 사용되어서는 안된다는 것이다. '.on'이 선호된다. –

0

나는이 경우 생각 :