2012-04-08 2 views
1

동적 HTML 시나리오에서 (data-* 속성을 통해) 눈에 잘 띄지 않는 자바 스크립트를 만드는 방법을 찾고 있습니다.눈에 잘 띄지 않는 javascript 및 동적 HTML

<input type="date" data-min-date="today" /> 

그리고 작업을 수행하는 JS :

(function(){ 
    $(function() { 
     $("input[type=date]").each(function() { 
      var el = $(this); 
      el.datepicker(el.data()); 
     }); 
    }); 
})(jQuery); 

지금 내가 알몸으로 입력을 변환하는 눈에 거슬리지 크로스 브라우저의 방법이 필요를의 우리가 JQuery와 - UI를 날짜 선택기를 나타내는 input 요소가 척하자 datepickers으로. 입력이 동적으로 추가됩니다. 일반적으로 datepickers를 추가하는 코드는 제어 할 수 없습니다. 일반적으로 코드는 jquery.ajax.unobtrusive 또는 jquery-pjax (둘 다 jQuery.html() 메소드 사용)을 통해 서버 측 미리 렌더링 된 html로 주입됩니다. 하지만 모든 jQuery 기반 시나리오에서 작동 할 수있는보다 일반적인 표준이 필요합니다.

나는 mutation events을 보았지만 이들은 IE에서 지원되지 않습니다.

전체 jsfiddle - 예를 http://jsfiddle.net/zv9Rt/1/

+0

입력 요소는 어떻게 추가됩니까? jQuery 또는 DOM을 통해? –

+0

@RobW, 실제로 jquery-pjax 또는 jquery.ajax.unobtrusive가됩니다. 그것들은 모두 jquery.html 메서드를 사용합니다. 하지만 좀 더 일반적인 솔루션을 원합니다. – hazzik

+0

setTimeout/setInterval을 사용하여 새로운 삽입을 검사하거나'.append','.html' 등을 감싸고 새로운'input [type = date]'요소가 있는지 확인할 수 있습니다. –

답변

0

사용 LivequeryDocumentation : 여기

는 샘플입니다.

$("input[type=date]").livequery(function() { 
    var el = $(this); 
    el.datepicker(el.data()); 
}); 
+0

을 참조하십시오. 그것은 setInterval/setTimeout을 사용하므로 돌연변이 이벤트에 supprot를 추가 할 것입니다. – hazzik

+0

@hazzik 아니에요. 질문에 대한 설명에서 설명한대로'.append','.html' 등의 메소드를 래핑합니다. 'setTimeout'은 아마 엘리먼트가 올바르게 표현되었는지 확인하는 데 사용됩니다. –

+0

ok :) 내 잘못 (: – hazzik

0

사용 $.delegate :

(function(){ 
    $(function() { 
    $('body').delegate("input[type=date]", function() { 
     var $el = $(this); 
     $el.datepicker($el.data()); 
    }); 
    }); 
})(jQuery); 
+0

그냥 작동하지 않습니다 – hazzik

+0

죄송합니다. 상위 셀렉터를 포함하는 것을 잊었습니다. 나는 그것을 고쳤다. –

0

그냥 .on()를 사용합니다. http://jsfiddle.net/H7ZUa/1/

+0

showOn 및 기타와 같은 멋진 datepicker 옵션을 사용하려는 경우에는 적절하지 않습니다. 어쨌든 예제 http://jsfiddle.net/zv9Rt/2/ – hazzik

관련 문제