2011-07-06 4 views
7

을 동적 요소를 만들 때 내가 아는, 당신은 같은 것을 사용해야 수행하는 방법 나는 을 라이브으로 만들었 기 때문에 동적으로 생성 된 요소와 상호 작용할 수 있습니다.날짜 선택기 라이브 만들기 JQuery와

+1

그래서 당신은'.datepicker가 ({})'특정 요소가 동적으로 DOM에로드로 실행하려면? – Luke

답변

11

에 따르면 Jquery .live works but not with .datepicker

이 작동합니다 :

$("#tdInput1").live("click", function(){ 
    $(this).datepicker({ 
     inline: true 
    }); 
}); 

편집 :이 답변은 jQuery를 이전 버전입니다. jQuery 1.9+에서 Vishal의 대답을 시도해보십시오.

+0

은 매력처럼 작동했습니다. 감사! – craigtb

7

두 가지 다른 문제를 다루고 있습니다. jQuery의 live은 이벤트 바인딩을위한 것이고 datepicker은 특별히 이벤트에 묶이지 않고 순간적으로 요소에 기능을 추가합니다.

live 이벤트와 함께 작동하는 유일한 이유는 jQuery가 실제로 조상 요소를 조상 요소에 연결하고 (자바 스크립트에서 이벤트를 버블 링하는 방식 덕분에) 조상은 실제로 이벤트를 수신하고 마치 위임 된 것처럼 위임합니다. 요소에서. 원칙은 다소 복잡하지만 길고 짧습니다. 이벤트와 만 작동 할 수 있습니다.

datepicker 기능을 추가하려면 새 요소가 작성된 후 datepicker 함수를 호출하기 만하면됩니다.

+0

감사합니다. 당신의 대답을 찾을 때까지 이것을 해결하려고 노력했습니다. – user1862764

19

허용되는 솔루션은 .. 키보드 포커스 이벤트 작동하지 않습니다 그래서이로 변경 한 다음 .live 방법을 포함하지 않는

$('.parent').on('focusin', '.datepicker', function(e) { 
    $(this).datepicker(options); 
}); 

jQuery를 1.9.1 이후 .on.live을 변경했다 . 키보드 포커스 이벤트뿐만 아니라 마우스 이벤트에도 위의 작업이 적용됩니다.

+0

나는 이것을 시험해 보았지만, datepicker 메서드가 없다는 에러를 내게했다. 당신은 나를 도울 수 있습니까 –

+0

@Sanyamjain 어떤 jQuery 버전을 사용하고 있습니까? – Vishal

+0

그리고 [jQueryUI] (http://jqueryui.com/) 라이브러리를 포함 시켰습니까? – Vishal

0

는 좀 더 적절한 해결책이라고 생각 :

$('input.datepickerClass').live('focus', function(){ 
    if (false == $(this).hasClass('hasDatepicker')) { 
     $(this).datepicker({ options }); 
    } 
}); 
+0

소스 코드 답변 만 피하십시오 - 독자가하고 싶은 말과 이유를 이해할 수 있도록 자신이하는 일에 대해 설명하십시오. –