Сделал такую разметку:
<div class="packery-image-wrapper col-md-4 item animated fadeInRight">
<a href="/">
<img class="someClass" title="flat" src="http://here.com/img" alt="flat" width="629" height="800">
</a>
</div>
Стили:
.packery-image-wrapper{
...
position: relative;
...
}
.packery-image-wrapper .caption{
...
position: absolute;
... etc.
}
И я хочу получить заголовок изображения и создать всплывающую подсказку с ним, используя такой код:
$(document).ready(function () {
$(".packery-image-wrapper").on("mouseenter",function () {
var captionContent = $(this).find('a img').attr("title");
$(captionContent).wrap('<div class="caption"></div>').appendTo('.packery-image-wrapper a').show();
}).on("mouseleave", function () {
$(".caption").hide();
});
});
Здесь я могу получить название изображения и вывести его в консоль, но тогда ничего не происходит.
2 ответа
Проблема в том, что вы передаете заголовок методу jQuery()
, поскольку он не начинается с <
, он будет рассматриваться как селектор, поэтому $(captionContent)
не вернет ни одного элемента. Вместо этого вам нужно создать div и установить captionContent
в качестве его текста
$(".packery-image-wrapper").on("mouseenter", function() {
var $caption = $(this).find(".caption");
if (!$caption.length) {
var captionContent = $(this).find('a img').attr("title");
$('<div class="caption"></div>').html(captionContent).appendTo($(this).find('a'))
}
$caption.show();
}).on("mouseleave", function() {
$(this).find(".caption").hide();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="packery-image-wrapper col-md-4 item animated fadeInRight">
<a href="/">
<img class="someClass" title="flat" src="//placehold.it/64" alt="flat" />
</a>
</div>
Вот простая демонстрация.
$(".someClass").on('mouseover', function(e){
if($(".customTitle").length)
$(this).parent().siblings('.customTitle').show();
else {
$(this).parent().after($('<div />', { text: $(this).attr('title'), class: 'customTitle',
css: { top: $(this).parent().offset().top - 100,
left: $(this).parent().offset().left} }));
}
}).on('mouseout',function(e){
$(this).parent().siblings('.customTitle').remove();
});
Похожие вопросы
Новые вопросы
jquery
jQuery — это библиотека JavaScript. Также рассмотрите возможность добавления тега JavaScript. jQuery — это популярная кросс-браузерная библиотека JavaScript, которая упрощает обход объектной модели документа (DOM), обработку событий, анимацию и взаимодействие AJAX, сводя к минимуму расхождения между браузерами. Вопрос с тегом jQuery должен быть связан с jQuery, поэтому jQuery должен использоваться рассматриваемым кодом, и в вопросе должны быть как минимум элементы, связанные с использованием jQuery.