2017-12-24 1 views
-1

DataTables이있는 테이블을로드하는 중입니다. 각 행에서 클릭 할 버튼을 만들고이 값은 자동으로 오프너 창에 입력됩니다. 내가 사용하는 함수는 다음과 같습니다.함수는 데이터 테이블의 버튼으로 클릭

$("button").click(function() { 
     var id = $(this).val(); 
     window.opener.document.getElementById('cliente-nombre').value = id; 
     window.parent.close(); 
}); 

이 함수는 데이터 테이블에로드 된 버튼으로 작동하지 않습니다. 페이지가로드 될 때 페이지가로드되지 않는 버튼을 만들면 문제없이 작동합니다. 페이지가 완전히로드 될 때 그들이 만들어지기 때문에

나는

답변

0

페이지로드 후로드 된 요소를 처리 할 때 on()을 통해 이벤트 핸들러를 부모 요소에 위임하여 클릭에 응답하는지 확인합니다. 그들이 나중에 문서에 추가됩니다 하위 요소에서 이벤트를 처리 할 수있는 장점이

위임 된 이벤트. 위임 된 이벤트 처리기가 연결될 때 제공되는 요소를 선택하면 위임 된 이벤트를 에 자주 사용하여 이벤트 처리기를 자주 연결하거나 제거하지 않아도됩니다. 이 요소는 이벤트 핸들러가 문서의 모든 버블 링 이벤트를 모니터하려는 경우 모델보기 컨트롤러 디자인 (예 : 문서) 또는 문서의보기 컨테이너 요소 일 수 있습니다. 문서 요소는 다른 HTML을로드하기 전에 전에 문서 머리 부분에서 사용할 수 있으므로 문서 준비를 기다리지 않고도 이벤트를 첨부해도 안전합니다.

$(document).on('click', 'button', function() { 
    var id = $(this).val(); 
    window.opener.document.getElementById('cliente-nombre').value = id; 
    window.parent.close(); 
}); 
: 여기

은 내가 document 객체를 사용

0

$(document).ready에 포장보십시오,이 해달라고 작업을 supose. 이렇게하면 코드를 실행하기 전에 페이지가로드 될 때까지 대기합니다.

$(document).ready(function() { 
    $("button").click(function() { 
      var id = $(this).val(); 
      window.opener.document.getElementById('cliente-nombre').value = id; 
      window.parent.close(); 
    }); 
}); 

그런 식으로 클릭 핸들러를 연결하기 전에 단추가 DOM에있게됩니다.

관련 문제