2010-02-26 6 views
0

OK 루프에서 데이터를 설정 재설정 그래서 부모 DIV에 추가되는 익명 된 div의 무리에 두 개의 데이터 조각을 저장하기 위해 노력하고있어 :jQuery를 데이터() 메소드는 이전에

var $timepicker = $('<div class="timepicker"></div>'); 
var startTime = new Date(0, 0, 0, 0, 0, 0, 0); 
var endTime = new Date(0, 0, 0, 23, 60 - settings.step, 0, 0); 

for (var time = startTime; time <= endTime; time.setMinutes(time.getMinutes() + 30)) { 
    $timepicker.append($('<div></div>').data('time', time)); 
} 

그러나 for 루프를 실행 한 후 data ('time')의 값은 각 div에 대해 마지막 시간 값과 항상 동일합니다 (반면 원래는 분명히 설정된 시간과 같아야합니다). 나는 단서를 찾기 위해 인터 웹을 샅샅이 뒤졌지만 아무도이 문제를 안고있는 것 같습니다. 도대체 무슨 일이야? 익명의 div를 사용하고 있기 때문입니까? 귀하의 도움을 많이 주시면 감사하겠습니다.

감사합니다,

다니엘

답변

0

사용 appendTo. append는 JS 오히려 전달 된 값보다 각각 DIV 시간에 참조 유지 되었기 때문에이 작동하지 않는 밝혀 그 관심자 jQuery 오브젝트에게

$('<div></div>').appendTo($timepicker).data('time', time));

+0

사실, 수행합니다 : http://api.jquery.com/append/ "반환 값 : jQuery를" 내가 오해 해요하지 않는 한 해결 방법은 모든 반복에 새 Date 객체를 인스턴스화하는 것이 었습니다 무슨 뜻인지 ... –

+0

당신이 그것을 시도? http://stackoverflow.com/questions/2159368/jquery-append-get-appended-elements – psychotik

+0

나는 그랬다. 그것은 다른 것으로 밝혀졌습니다 (방금 게시 한 답변 참조). –

1

반환하지 않는다. 이것은 JS가 값으로 단순 유형 만 전달하기 때문입니다. 객체는 참조로 전달됩니다.

var $timepicker = $('<div class="timepicker"></div>'); 
var startTime = new Date(0, 0, 0, 0, 0, 0, 0); 
var endTime = new Date(0, 0, 0, 23, 60 - settings.step, 0, 0); 

for (var time = startTime; time <= endTime; time.setMinutes(time.getMinutes() + 30)) { 
    $timepicker.append($('<div></div>').data('time', new Date(0, 0, 0, time.getHours(), time.getMinutes(), 0, 0) 
} 
관련 문제