[英]Add class to element with dynamically added data attribute
好的,所以我有一个HTML文件,看起来像这样:
while($stuff = $junk->fetch()){ ?>
<div class="top-div" data-place-id="<?php echo $place['id']; ?>"></div>
<div>
<article>
<div>
//some stuff
</div>
<div>
<span class="expand" data-place-id="<?php echo $place['id']; ?>"></span>
</div>
</article>
</div>
} ?>
如您所见,对于数据库的每个结果,都将输出这样的结构。 自然,每次至少要有几个。 我想使它这样,使每个时间span
被点击时,一类被添加到<div data-place-id="">
其中数据就地-id为相同点击的元素。
我尝试这样做:
expandOverlay = function(){
$(".expand").each(function(){
$(".top-div").addClass('is-expanded');
})
})
但是,这只会将该类添加到该类的每个元素中。 然后我尝试了这个:
expandOverlay = function(){
$(".expand").each('click', function(){
var dataAttr = $(this).data();
if($(".place-overlay").data() == dataAttr){
$(this).addClass("is-expanded);
}
})
});
但这也不起作用。
因此,如何从单击的元素中获取.data()以及如何查找具有相同data属性的其他元素,以便可以为其分配一个类?
$('span.expand').click(function() {
$('div[data-place-id="' + $(this).data('place-id') + '"]').addClass('is-expanded');
});
克里斯蒂安(Cristian)拥有正确的权利,但可能不必那么复杂。 这个怎么样?
$('span.expand').click(function() {
$(this).closest('div[data-place-id]').addClass('is-expanded');
});
data-place-id
值是多少,没关系吗?
尝试这个,
$('.expand').click(function(){
dataid = $(this).data('place-id');
$('div[data-place-id="'+dataid+'"]').addClass('is-expanded');
})
这有效吗?
$('span.expand').click(function() {
$(this).closest('div.top-div').addClass('is-expanded');
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.