2012-07-17 2 views
0

페이지가 있고 custom.js 파일 (jQuery를 사용하고 있습니다)에 내 Java 스크립트 함수를 정의했습니다. 나는jquery.load() 후 jQuery 함수가 작동하지 않습니다.

내 페이지는이 같은 div 요소를 </body> 태그 앞에 몸의 끝에서 JS 파일을 넣어 : <div id="userinfo"></div> 내 페이지로드, 내 JS 파일이 그에 외부 페이지를 가져 오지 때.

외부 페이지 내 JS 파일에이 <div id="login"></div>

같은 요소가 나는 사용자가 login을 클릭하면 모달 창을 사용자에게 보여에게 로그인 폼을로드하는 기능을 정의합니다.

하지만 외부 페이지를로드 할 때 JS 파일이 작동하지 않습니다 !! 해당 요소를 찾을 수없는 것 같습니다.

가이드 제발! :

custom.js 파일의 일부 :

코드의 현재 버전은 요소이기 때문에 (심지어 DOM에서 사용 가능한 전에 #userinfo하는 이벤트 핸들러를 클릭 결합하려고
jQuery(document).ready(function($) { 

$('#userinfo').load('CustomerOptions.asp'); 

    (function() { 
    $('#login').click(function(event){ 
     // something to do 
    }); 
    })(); 

}); 
+0

태그에 넣었습니까? 또한, 바이올린이나 다른 것을 가지고 있습니까? – jeschafe

+0

전에 태그 : – MAY3AM

답변

1

로드 비동기 호출을 통해 DOM에 추가됨).) (

$('#userinfo').on('click','#login',function(){ 
    //Click logic here 
}); 
$('#userinfo').load('CustomerOptions.asp'); 
-1

또는 대안으로 대신 .click의) (.live 사용할 수 있습니다

$('#userinfo').load('CustomerOptions.asp', function() { 
    $('#login').click(function(event){ 
     // something to do 
    }); 
}); 
+2

라이브가 지원되지 않습니다. 'on'은 더 나은 옵션이 될 것입니다. – Chandu

+0

네 말이 맞아. 그것을 지적 해 주셔서 감사합니다 – Bogdan

0

이없는 작품 당신은 DOM에 존재하기 전에 #login하는 이벤트를 할당하기 때문이다. 이런 경우에는 "라이브"이벤트를 사용해야합니다. 라이브 이벤트에서는 대상 요소가 DOM에 있어야합니다.

jQuery(document).ready(function($) { 
    $('#userinfo').load('CustomerOptions.asp'); 

    $('#userinfo').on('click','#login',function(event){ 
    // something to do 
    }); 
})(); 

편집 : @ManselUK에서 지적한대로 'live'는 사용되지 않으며 'on'을 사용해야합니다.

+0

'live'는 ['on'] (http://api.jquery.com/on/)에 찬성하여 반대되었습니다. – ManseUK

+0

오른쪽, live()는 그것을 사용하여 3 년 후에 사라지지 않습니다. :) – devundef

+0

고맙습니다. 감사 :) – MAY3AM

관련 문제