#javascript #jquery
#javascript #jquery
Вопрос:
У меня есть решение для замены миниатюр, мне нужно добавить тег a вокруг элемента img и сохранить ту же функциональность.
jQuery
$(".large").click(function () {
var thumbRel = $(this).attr("rel");
$(this).effect("transfer", { to: $(".thumbnail img[rel='" thumbRel "']") }, 1000);
});
$(".thumb").click(function () {
$(".thumbnail [class^='thumb']").removeClass("current");
$(this).addClass("current");
$(".large").attr("rel", $(this).attr("rel"));
$(this).effect("transfer", { to: $(".large") }, 1000);
$(".large").animate({ opacity: 1 }, 1000);
$(this).queue(function () {
$(".large").attr("src", $(this).attr("src").replace("-thumb", ""));
$(".large").animate({ opacity: 1 }, 1000);
$(this).dequeue();
});
});
Разметка смешана с точечной сетью, но вот она
<div class="product_images">
<div class="mainImage">
<a class="ShowProductImageDlg" href="#" onclick="ProductImagesDlgClientSide.showDialog('@Model.ProductToDisplay.Product.UrlSlug', 'Bottle'); return false;" >
<img class="LargeImage" src="@Model.ProductToDisplay.Product.awsImageUrlLarge" alt="@Model.ProductToDisplay.Product.ProductName" />
</a>
</div>
<strong>Additional Images</strong>
<div class="thumbnail">
<ul>
<li><a href=""><img class="SmallImage Bottle" src="@Model.ProductToDisplay.Product.awsImageUrlSmall"
alt="@Model.ProductToDisplay.Product.ProductName" /></a></li>
<li><a href=""><img class="SmallImage BackLabel" src="@Model.ProductToDisplay.ProductAdditionalImageUrlSmall(awsProductImageType.BackLabel)"
alt="@Model.ProductToDisplay.Product.ProductName" /></a></li>
</ul>
</div>
</div>
Конечная цель — иметь весь div, в котором изображение доступно для кликабельности (размером 90 на 90 пикселей), когда само изображение имеет размер всего 80×35.
Я хочу использовать тот же jQuery.
Ответ №1:
Вы можете сделать это так (см. jsfiddle в качестве доказательства):
var link = jQuery('<a>', {
'href': 'http://www.google.com/',
'title': 'Dynamically generated link'
});
jQuery('img').wrap(link);
По сути, вы сначала создаете ссылку ( <a>
элемент), а затем обертываете ее вокруг изображений, выбранных img
селектором (вы можете настроить его в соответствии с вашими потребностями).
Комментарии:
1. Извините, мне просто нужен <a href=»#»>, чтобы я мог поместить display: block в элемент, чтобы сделать все поле интерактивным. (90×90 пикселей), а изображения размером 80×35, я не хочу, чтобы миниатюры где-либо связывались.
2. Так что просто применитесь
display: block; cursor: pointer;
к изображениям и добавьте к ним отступы. Нет смысла создавать элементы для переноса без причины, кроме представления.3. @rc89: вам не нужны
<a>
теги для обертывания изображений, чтобы сделать их интерактивными, вам даже не нужно их применятьdisplay: block;
, даже указатель можно изменить. Я думаю, что сейчас самое время обдумать вашу идею.4. Спасибо, ребята, добавление указателя курсора, удаление выравнивания текста по центру и добавление отступов помогли.
5. При этом я провел некоторое тестирование и обнаружил, что изображения имеют разные размеры, поэтому опция заполнения не будет работать.