2012-02-20 2 views
0

Quick rundown. Я добавляю класс «проверенных» элементов изображения, когда пользователь нажимает на них. Нажатие кнопки мой «Далее» скрывает DIV «Выбрать-фотографии» и показывает подтверждени 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); 
} 
}); 

.get() метод работает достаточно хорошо; однако, если вы нажмете кнопку «Назад», чтобы вернуться к шагу 1, и выберите новые фотографии, какие бы фотографии вы ни выбрали, из DOM.

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

});

Есть ли способ вернуть эти «проверенные» элементы в «выбрать» div без перезагрузки страницы? В основном просто перезагрузка процесса.

+0

Может быть, вы хотите, чтобы первый клонировать элементы: «проверено» '$ () .clone(). получить() '. –

+0

'get()' возвращает массив элементов, вам не нужно будет перебирать их? – elclanrs

+0

Клонирование элементов будет работать. В качестве альтернативы, если вы не заботитесь о порядке элементов, вы можете перенести их из '.confirm-batch' в' .choose-photos' так же, как раньше. –

ответ

1

jQuery перегружает некоторые из его методов с помощью глупого поведения.

Одним из примеров является то, что она позволяет это ...

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

Похоже, вы вставка HTML строки вынесенной из selected элементов, но это не так, это reloacting их, как вы обычно будете с узлами DOM.

В качестве решения можно либо клонировать их, или лучше, просто поместите их туда, где вы их нашли вместо того, чтобы уничтожить их с .html('')

+0

Это какое-то недокументированное использование 'html'? –

+0

@JamesMontagne: Кажется. Им было бы лучше просто вставить значение '.toString()' элемента * (даже если это не было желаемое содержимое) * вместо того, чтобы давать возможность DOM-манипуляции. –

+0

Я бы сказал, что им было бы лучше, если бы он ничего не делал или не добавлял это поведение в документацию, а не продолжал делать что-то (хотя и менее разрушительное), которое все еще недокументировано. –