2010-04-28 2 views
1

현재 AJAX를 통해 HTMl 콘텐츠를로드 중입니다.요소 이벤트 속성에서 JavaScript를 사용하지 않지만 AJAX를 통해로드하는 방법

나는 속성 (및 기타 이벤트 속성) onclick 다른 요소에 대한 것들에 대한 코드가 있습니다.

이 작업을 수행하지만 코드가 약간 큰, 읽기 어려운 점점 것을 발견하기 시작하고있다. 또한 이벤트 코드가 '인라인'인이 코드는 나쁜 연습으로 간주되며 실제로는 element.onclick = foobar으로 수행하고 foobar을 다른 곳에서 정의해야한다고 읽었습니다.

내가 정적 페이지로이 작업을 수행하는 매우 쉬운 방법을 이해 그냥 페이지의 하단에 스크립트 태그를 가지고 페이지가로드되면 그것을 실행해야합니다. 그러면 필요한 모든 이벤트를 첨부 할 수 있습니다.

하지만 AJAX를 통해 콘텐츠를로드 할 때 어떻게 이런 종류의 영향을받을 수 있습니까? 또한로드 된 내용이 데이터베이스에있는 내용에 따라 매우 다를 수 있다는 약간의 경우가 있습니다. 결과 테이블과 같은 HTML의 특정 섹션은 전혀 표시되지 않을 수도 있습니다. 어떤 몸이 그들을 필요로하는 경우

나는 코드의 일부 샘플을 게시 할 수 있습니다,하지만 난이 일을 가진 사람을 도움이 될 것 어떤 종류의 아무 생각이 없습니다. 나는 그것이 JQuery를 이미 사용하고 있다는 것을 지적 할 것이다.

작은 코드이

<input type="submit" name="login" value="login" onclick=" 
if(check_login(this.form)){ 
    Window_manager.windows[1].load_xml('login/display.php?username=' + this.form.username.value + '&amp;password=' + this.form.password.value); 
} else { 
    return false; 
}"> 

나는이 작은 샘플 알고 AJAX를 요청을 통해로드 코드의 샘플입니다,하지만 난에 나는 물건의 일종이다

샘플 약. 콘텐츠가로드 될 때이 코드를 어떻게 첨부 할 수 있습니까?

+0

사용자 정의 코드처럼 보입니다. 콜백 함수를 추가해야합니다. 어쨌든 jQuery.ajax()를 사용하지 않는 이유는 프로젝트에서 jQuery를 사용하고 있기 때문입니다. – rochal

답변

3

jQuery를 .live() 방법은 당신이 찾고있는 무엇을 아마. 새로 생성 된 HTML 요소에 클릭 이벤트를 첨부하므로 업데이트 패널을 새로로드 할 때마다 .click()을 호출 할 필요가 없습니다.

+0

그게 아주 멋진 기능입니다. 따라서 클래스를 이벤트에 연결하면 해당 클래스의 새로운 요소가 만들어지면 해당 이벤트에 자동으로 연결됩니다. 핸디,하지만 내가 뭘하지 않습니다. 서버에서 콘텐츠를로드 할 때 이러한 이벤트를 할당 할 수 있어야합니다. – thecoshman

+0

$ .ajax에는 콜백 함수가 있습니다. 그것을 사용하여 콘텐츠를 다시 얻을 때 수행해야 할 작업을 수행하십시오. – rochal

0

자바 스크립트에서 이벤트 바인딩을 만들어보다 깨끗한 HTML 코드를 얻을 수 있습니다. ID와 같은 HTML 요소에 대한 DOM 개체를 식별하는 방법 만 있으면됩니다.

당신이 ID를 가지고있는 링크가있는 경우 "fooLink는"당신은 당신의 자바 스크립트에서이 작업을 수행 할 수 있습니다

docuemnt.getElementById('foo').onclick = function() { 
    //do your stuff here 
} 

이 링크는 경우 "온 클릭"속성에 이벤트를 바인딩과 같은 영향을 미칠 것 요소를 HTML 코드에 추가하십시오.

그런 식으로, 당신은보다 쉽게 ​​읽고 유지 관리 할 수있는 많은 청소기 HTML을 생성 할 수 있습니다.

+0

답변을 주셔서 감사합니다,하지만 당신은 내 문제의 요점을 놓쳤습니다.JavaScript에 이벤트를 요소에 연결하는 방법을 알고 있지만 AJAX를 통해 콘텐츠를로드 할 때이 작업을 수행 할 수 있어야합니다. – thecoshman

+0

좋습니다. 그러면로드 한 후에 다시 호출 할 수있는 함수에 이벤트 바인딩 코드를 래핑 할 수 있습니다. 바인딩을 새로 고치는 새로운 콘텐츠. 또는 이미 언급 한 것처럼 jQuerys와 함께 "live()"로 이동하십시오. – selfawaresoup

관련 문제