2013-10-29 3 views
0

저는 JQuery에 익숙하지 않으므로 기다려주십시오.이전 JQuery 호출 후 DOM에 액세스하는 방법

 <a href='#' class="deleteCustomer">Delete</a></td> 
     . 
     . 
    <a href="#" class="undoCustomer">Undo</a> 

그래서, 이러한 링크의 각이 동일한의 .js 파일의 다른 부분에 액세스 :

는 기본적으로 좀 JQuery와 스크립트를 실행하는보기에 두 개의 하이퍼 링크가 있습니다. 내 "삭제"는 데이터베이스에서 소프트 삭제를 수행하는 일부 처리를 수행합니다. DOM로드 및이 잘 작동합니다. firebug를 사용하고 있는데 .js에 console.log를 삽입하면 삭제하려는 고객의 ID를 볼 수 있고 나머지는 곧장 전달됩니다.

$(container).find('a.deleteCustomer:first').click(function(e) { 
      console.log("CustomerId " + $(container).find('input[name=Customer_CustomerId]:first').val()); 

내 "실행 취소"그러나, 그것은 명중 아니라고 계시의 .js의 '실행 취소'부분에서 다른 라인과 CONSOLE.LOG에서 동일한의 .js에 액세스합니다.

$(container).find('a.undoCustomer').click(function(e) { 
    console.log("CustomerId " + $(container).find('input[name=Customer_CustomerId]:first').val()); 

그래서 DOM이 준비되지 않은 것 같습니다 (?). 이 경우 어떻게 해결할 수 있습니까? DOM을 수동으로 다시로드해야합니까? 그렇다면 어떻게?

P. '실행 취소'를 클릭하면 아무 일도 일어나지 않습니다. 즉, FireBug에 console.log가 표시되지 않습니다. 그러나 브라우저를 새로 고침하면 예상대로 실행됩니다. 실행 취소 jquery가 실행됩니다.

+1

로그/콘솔을 확인하고 코드 스 니펫이 실행되지 않도록하여 이벤트에 첨부하지 않는 오류가 없는지 확인하십시오. DOM은 * live *이며, 조작 후 변경 사항을 직접 관찰 할 수있는 것처럼 "다시로드"할 필요가 없습니다. "DOM 준비"는 HTML 마크 업에서 생성 될 때 초기 DOM을 만드는 것을 말합니다 (이 작업을 기다리는 것이 중요하지만 그 원인이 범인이라면 첫 번째 바인딩이 작동하지 않을 가능성이 큽니다). 클릭 핸들러를 설정 한 후 – user2864740

+0

HTML이로드되고 있습니까? 그렇다면 페이지로드시 존재하는 DOM의 일부로 핸들러를 델리게 처리해야합니다. 클릭을 유발하여 뭔가를 제거하는 매우 추상적 인 방법처럼 보입니다. – charlietfl

+0

내 게시물에 추가해야 할 것이 있습니다. 처음에 '실행 취소'를 클릭해도 아무 일도 일어나지 않습니다. 즉, 콘솔 버그는 Firebug에 쓰여지지 않았습니다. 새로 고침하고 실행 취소를 클릭하면 이벤트가 실행되고 JQuery의 실행 취소 섹션이 실행됩니다. – user2284341

답변

0

전체 코드가 없으면 알기가 어렵습니다. 게시물, 제목 및 댓글에서 두 가지 가능한 원인을 확인했습니다. 당신이 클릭 할 때 "입력"을 삭제하는,

$(function() { 
    ... // your code here 
}); 

둘째는 DOM이 완전히 준비되기 전에

첫째, 당신은 당신의 코드를 실행 할 수있다, 그 다음에 모든 자바 스크립트 초기화 스크립트를 포장하려고 지우다? 이 경우 "찾기"가 복구하지 않는 것이 정상입니다. 이러한 경우에 실행 취소를 수행하는 솔루션은 "입력 취소"를 클릭했을 때 "입력"을 숨기고 다시 표시하는 것입니다.

관련 문제