Я создал галерею изображений, где вы можете щелкнуть изображение, чтобы отобразить большую версию. При нажатии на изображение в строку ниже вставляется новое изображение. Я получил ошибку, и я не могу понять, как ее решить. Например, если вы нажмете на изображение в первой строке, отобразится предварительный просмотр изображения. Затем, если вы нажмете на изображение в два ряда ниже, не будет показан предварительный просмотр изображения. Он не работает в Chrome или Safari. В Firefox он отлично работает.
Вот Javascript и jQuery (2.0.3), которые я использую:
$(document).on("click", ".imgBox", function(){
imgsrc = $(this).find('img').attr('src');
var bigBox = $('<div class="bigBox"><img src="'+imgsrc+'"/></div>');
imgClicked = $(this);
$('.bigBox').remove()
if ($(".bigBox").length > 0){
bigBox.find('img').attr('src', imgsrc);
bigBox.insertAfter(imgClicked);
} else {
bigBox.insertAfter(imgClicked).css('display', 'block');
}
});
Я создал JSFiddle, чтобы вы могли попробовать сами. Просто убедитесь, что вы изменили размер окна браузера, чтобы получить как минимум 3 строки.
Я протестировал его в Chrome 30.0.1599.101, Safari 6.0.5 и Firefox 24.0 на OSX.
Предупреждение. Это решение немного хакерское. :)
Я заметил, что хром показывает это изображение, когда я изменяю размер окна jsfiddle, как я выразился в комментарии. Поэтому я начал экспериментировать над тем, как "обмануть" хром перерисовать еще раз. Есть много способов вызвать перерисовку. Я решил манипулировать атрибутом style
.
Поэтому я создал простую проверку, чтобы динамически overflow
свойство overflow
с auto
на visible
(оба эти значения не должны разрушать ваш макет. И я переключаю эти значения, когда пользователь щелкает изображение. Например: http://jsfiddle.net/HeQGL/5/
Ps Обратите внимание, что я немного изменил ваш скрипт. Изменил элемент для прослушивателя событий, использовал переменные внутри функции и использовал .detach()
вместо .remove()
поскольку он лучше подходит, когда нам нужно снова вставить элемент обратно в DOM.
Я тестировал его в Chrome 30.0.1599.101 м на Windows, и он работает очень хорошо.
width
в .bigBox вpx
вместо%
? Я немного подправил CSS, мне кажется, что проблема есть.%