Я немного не люблю писать слишком много кода; если вы можете сделать серьезную попытку, сотни людей будут рады помочь вам получить эту последнюю милю!
Хотя я не против дать совет.
Ваш первоначальный подход совсем не плох. Скрыть все соответствующие div, а затем, в зависимости от события изменения, показать соответствующий. Вам просто нужно вставить новую логику:
- Когда документ готов, проверьте, существует ли файл cookie, который сообщает вам, какой div нужно открыть.
- если файл cookie существует, получить его значение и показать соответствующий div
- если кук не существует, не открывайте соответствующий div
- в обработчике изменений, когда пользователь делает выбор, устанавливает cookie и затем выполняет анимацию
Надеюсь, это поможет!
[обновлено в комментариях ниже]
Если вы хотите основать его на установленном «выбранном», вам просто нужно сделать это:
$(document).ready(function() {
$('div.book').css("display","none"); // display none on all divs with class 'book'
var listVal = $('#book_list').val();
if(listVal != "") {
$('#book-'+listVal).show();
}
$('#book_list').change(function() {
$('div.book').slideUp("fast"); //Slide Up Effect
$('#book-' + $(this).val()).slideDown("slow"); //Slide Down Effect
});
});
Обратите внимание на изменение, которое я заметил по пути: ваши div не могут быть просто числом; действительные идентификаторы должны начинаться с буквы, поэтому я добавил шаблон «book-» в начало. Я не публиковал обновленный HTML-код, но для использования предложенного кода у ваших div-ов должны быть идентификаторы book-1 book-2 и book-3.
Не утверждая, что это оптимизировано, но это суть. ;-) Если значение не выбрано, по умолчанию выбирается первое, значение которого равно пустой строке. Один документ готов, получите значение, и если это НЕ пустая строка, должен быть div, который нужно показать. Показать его на основе значения списка.