2012-04-26 3 views
0

jQuery 1.4.4를 사용 중이며 id로 동적으로 datepicker를 추가하려고합니다. 다음은 코드입니다.jQuery를 사용하여 id로 동적으로 datepicker를 추가하는 방법

$(function() { 
    $('#ListTableBody').find('input[id^="PickDate."]').each(function() { 
     alert(this.id); 
     $(this.id).datepicker(); 
    }); 
}); 

동적으로 ID를 생성하는 테이블을 사용하고 있습니다. 위의 코드는 각각의 ID를 찾고 경고를 사용하여 확인했습니다. 내가 반복 할 때 this.id에 올바른 ID와 입력 값이 표시되지만 datepicker가 작동하지 않는 이유는 무엇입니까? 또한 오류가 발생하지 않습니다.

내가 여기서 잘못하고있는 아이디어가 있습니까?

답변

3

이 시도 :

$('#ListTableBody').find('input[id^="PickDate."]').each(function() {     
    $(this).datepicker(); 
}); 

id 속성을 가져올 필요가 없습니다. this을 jQuery 객체로 설정할 수 있습니다. 궁극적으로

+0

예. 나는 현명하다고 느끼지 않지만 도움을 주셔서 감사합니다! –

1

당신이 그것을 위해 ID를 사용하려는 경우 당신이 뭔가를 할 필요 했어 :

$("#"+this.id).datepicker(); 

을하지만 그것은 단지 할 일이 많이 쉬워 :

$(this).datepicker(); 
0

은 datepicker로 사용해야하는 각 컨트롤에 대해 동일한 클래스를 넣을 수 있습니다.

<script> 
     $(function() { 
      $('.class').datepicker(); 
     }); 

    </script> 
+0

당신은 너무 많습니다'});' – ManseUK

+0

왜 그럴까요? 만 필요합니다 – jairoortiz

1

대신 클래스를 사용합니다. ID는 문서 당 한 번만 사용하도록되어 있으며 ID 선택자에게 each()을 적용한다는 사실은 페이지에 인스턴스가 두 개 이상있을 수 있음을 나타냅니다.

대신 .datepicker과 같은 설명 클래스 이름을 사용하십시오.

$(document).ready(function() { 
    $('input.datepicker').datepicker(); 
}); 

each() 루프에 대한 필요를 다른 작업을 수행하지 않는 경우 : 장점은 다음 페이지에 하나 이상이 없다 할 수 있으며, 또한 같은 식으로 그들에 datepickers을 초기화 할 수 있습니다.과 같이 일정 영역 내의 입력으로 날짜 피커를 제한하려면 (원하는 경우 클래스 이름을 사용하도록 권하면 페이지에 둘 이상의 문자를 표시 할 수 있습니다) 다음 선택자를 변경하십시오.

$(document).ready(function() { 
    $('#ListTableBody').find('input.datepicker').datepicker(); 
}); 
+0

선택기는 OP가 시작과 함께 사용되기 때문에 아무런 문제가 없습니다 ... – ManseUK

+0

고유 한 ID는 없으므로 없습니다. 거기 문제. 클래스가 선호하는 jQuery 원리라는 점에 동의합니다. 그래서 지금은 클래스를 사용하는 시간이있을 때 ID와 리팩토링을 사용합니다. 아주 좋은 대답! –

+0

Struts2를 사용하고 있으므로 클래스와 태그를 연결하는 cssClass 속성에 대해 알아야했지만 훨씬 더 깔끔한 솔루션입니다. 우수 사례! –

관련 문제