我正在创建一个相册功能,用户可以从一组照片中选择照片,然后将它们应用到一个文件夹中,问题是,我在选择特定的照片和应用某些属性时遇到了麻烦(主要是css风格,我希望在选择时图像周围有边框)。
下面是html/jquery:
超文本标记语言
<div class="demo-gallery">
<ul id="lightgallery" class="list-unstyled grid">
<?php foreach ( $media_items as $item ): ?>
<li>
<img class="img-responsive" id="lazy" data-src="<?php echo $item->image_path_sd; ?>">
</li>
<?php endforeach; ?>
</ul>
</div>
查询
var picture = document.querySelectorAll('#lazy');
$(picture).each(function () {
$(document).on('click', /*???*/, function () {
if ($(/*???*/).data('clicked', true)) {
$(/*???*/).css("border", "none");
$(/*???*/).data('clicked', false);
} else {
$(/*???*/).css("border", "4px solid #00CE6F");
$(/*???*/).data('clicked', true);
console.log($(/*???*/).data());
}
});
});
我的猜测是,我需要弄清楚所有的评论都在哪里,然而,我可能是在错误的方向尝试这个。
当我使用console.log(picture)时,我得到了一个包含所有照片的数组。当我使用console.log(picture[2])时,它显示了第三张图片。这就是我想要的,但是我如何将这些属性应用到每张照片上呢?
总的来说:我希望用户点击他们想要的照片,应用一个突出显示的照片周围的边界,让他们知道它是当前选定的。
2条答案
按热度按时间9lowa7mx1#
由于您使用的是jQuery,因此不需要使用文档函数,当您选择可以应用于多个项目的内容(如类名)时,可以获取项目列表。
这里的关键是使用jQuery时,
.each(function(){ })
传入元素本身,您可以使用this
访问它。using $(pictures).each()
允许您访问该集合中的每个单独元素。因此,您可以在每个
img
本身上放置一个单击侦听器,而不是在文档上应用一个单击侦听器。要显示边框,请将样式作为类放入css文件中,然后使用
$().toggleClass(/* class name */)
函数。szqfcxe22#
不能对同一个HTML文档中的多个标记使用相同的id选择器,而是使用“.lazy”类选择器。
你就可以做这样的事。
CSS:
查询: