2012-02-20 2 views
0

빠른 개요 - 사용자가 클릭 할 때 이미지 요소에 'checked'클래스를 추가하고 있습니다. 내 '다음'버튼을 클릭 은과 같이, 선택한 사진에 주입의 '선택 - 사진'사업부를 숨기고 확인 DIV를 보여줍니다jQuery .get() DOM weirdness

$('.next').click(function() { 
    $('.user-photos').attr('id', 'step-two'); 
    $('.choose-photos').hide(); 
    var selected = $('.checked').get(); 
    $('.confirm-batch').show().html(selected); 
} 
}); 

갔지() 메소드는 매우 잘 작동; 그러나 1 단계로 돌아가서 새 사진을 선택하면 선택한 사진이 DOM에서 사라집니다.

$('.choose').click(function(){ 
$('.user-photos').attr('id', 'step-one'); 
$('.confirm-batch').hide().html(''); 
$('.choose-photos').show(); 
} 

});

페이지를 다시로드하지 않고 '선택'div에서 해당 '체크 된'항목을 다시 가져 오는 방법이 있습니까? 기본적으로 프로세스 재설정 중.

+0

그들을 파괴하는 대신 그들을 발견 한 곳 솔루션으로

, 당신이 그들을 복제, 또는 더 나은 수 중 하나, 다만 어쩌면 당신은 첫 번째 요소를 복제 할 그들을 다시 넣어 '. 확인'$를 () .clone(). get()'. –

+0

'get()'은 요소 배열을 반환합니다. 루프를 반복하지 않아도됩니까? – elclanrs

+0

요소를 복제하면 효과가 있습니다. 또는, 요소의 순서를 신경 쓰지 않는다면 이전과 거의 같은 방식으로'.confirm-batch '에서'.choose-photos'로 되돌릴 수 있습니다. –

답변

1

jQuery는 어리석은 동작으로 메소드를 오버로드합니다.

한 예는

var selected = $('.checked').get(); 
$('.confirm-batch').show().html(selected); 

당신이 selected 요소에서 렌더링 된 HTML 문자열을 삽입하는 것처럼 보이는,하지만 당신은 아니야, 그것은 같이 그들을을 reloacting 것 ... 그것은이를 수 있다는 것입니다 당신은 일반적으로 DOM 노드를 사용합니다. 당신이 .html('')

+0

이것은'html'의 문서화되지 않은 사용법입니까? –

+0

@JamesMontagne : 그럴 것 같습니다. 그것들은 DOM 조작 기능을 제공하는 대신 * 요소의 * .toString() 값을 삽입하도록하는 것이 더 낫습니다 (* 원하는 내용이 아닐지라도) *. –

+0

나는 아직 문서화되지 않은 무언가 (계속해서 덜 파괴적 임)를 계속하는 것보다 문서 작업에 아무것도하지 않거나이 행동을 추가하는 것이 더 좋을 것이라고 주장합니다. –