У меня этот код в HTML:
<div id="thumbs_list">
<ul id="thumbs_list_frame">
<li id="thumbnail_260" style="display: none;">...</li>
<li id="thumbnail_261" style="display: none;">...</li>
<li id="thumbnail_262" style="display: none;">...</li>
<li id="thumbnail_264" style="display: list-item;">
<a href='mywebsite.com'>
<img src="myphoto.png" alt="Photo"/>
</a>
</li>
<li id="thumbnail_266" style="display: none;">...</li>
</ul>
</div>
Я ищу, чтобы получить источник изображения, который находится в <li>
со style="display: list-item;"
(myphoto.png
) с jQuery, но я не знаю, как это сделать...
Я попробовал это:
var firstThumbnailDisplay = $('#thumbs_list_frame li').css('display') == 'list-item';
var img = firstThumbnailDisplay.find("img").first().attr('src');
Но это не сработает.
Это должно работать:
var src = $("#thumbs_list_frame li").filter(":visible:first").find("img").attr("src");
Он находит первый видимый (стиль не установлен для display: none;
) li
и получает атрибут src
изображения внутри него.
:visible
не проверяет list-item
он проверяет, видим ли он. Это также вернется, когда display:block
. Во-вторых, если видно более одного src == undefined .
Используйте селектор :visible
.
var firstThumbnailDisplay = $('#thumbs_list_frame li:visible')
Используйте :visible
чтобы найти тот, который отображается, а затем с помощью .find()
и .attr()
для достижения вашей цели.
var src = $('.result').html($('#thumbs_list_frame li:visible').find('img').attr('src'));
//declare an array (there could be multiple)
var listItems = [];
//Loop the items
$('#thumbs_list_frame li').each(function() {
var $this = $(this);
//check for value
if ($this.css('display') === 'list-item') {
//push item into array
listItems.push($this);
}
});
//listItems now contains all list items with display:list-item;