好的,我有一个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="">
中添加一个类,其中data-place-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()以及如何找到具有相同数据属性的其他元素,这样我可以为它分配一个类?
答案 0 :(得分:1)
$('span.expand').click(function() {
$('div[data-place-id="' + $(this).data('place-id') + '"]').addClass('is-expanded');
});
答案 1 :(得分:1)
$('span.expand').click(function() {
$(this).closest('div[data-place-id]').addClass('is-expanded');
});
data-place-id
值是什么并不重要,是吗?
答案 2 :(得分:1)
试试这个,
$('.expand').click(function(){
dataid = $(this).data('place-id');
$('div[data-place-id="'+dataid+'"]').addClass('is-expanded');
})
答案 3 :(得分:1)
这有效吗?
$('span.expand').click(function() {
$(this).closest('div.top-div').addClass('is-expanded');
});