我想填充div
动态起诉jQuery。现在问题如下:
使用.closest()
不会将div#articleDetail
填入divs
个类
.date
,.views
和.count
。因为我认为.closest()
爬上向上 DOM,而不是向下。
只有h4
标记中的名称填入底部div
(#articledetail
)
HTML:
<div id="make" class="span12">
<article class="make"> <a href=""><img src="../img/175x175.jpg" alt="" /></a>
<div class="content">
<h4><a class="merc" href="#latestClick">Mercedes-Benz</a></h4>
<div class="date">12 March 2013</div>
<div class="count"><span></span> photos</div>
<div class="views">Views: <span>32</span>
</div>
</div>
</article>
<article class="make latest"> <a href=""><img src="../img/175x175.jpg" alt="" /></a>
<div class="content">
<h4><a class="bmw" href="#latestClick">BMW</a></h4>
<div class="date">12 March 2013</div>
<div class="count"><span></span> photos</div>
<div class="views">Views: <span>89</span>
</div>
</div>
</article>
</div>
<div id="articleDetail"></div>
JS:
$('#make article h4 a').click(function (e) {
e.preventDefault();
$('#latestInner, #make, #models').hide(200);
$('#article').show(500);
//fill articleDetail (name, date, views, count)
$('#articleDetail').empty();
$(this).closest('.date').clone().appendTo('#articleDetail'); //date
$(this).closest('.count').clone().appendTo('#articleDetail'); //count
$(this).closest('.views').clone().appendTo('#articleDetail'); //views
$(this).parent().clone().appendTo('#articleDetail'); //name
.....
我有什么建议可以实现这个目标吗?
注意:我不想要添加ID,我不想更改HTML的结构。必须有一种方法可以调用适当的类并将其附加到#articledetail
。
.views .count and .date
答案 0 :(得分:2)
你是对的.closest
上了树而不是下来。您要查找的元素都是该链接的祖父母的子项。所以你会怎么做?您首先找到祖父母,然后搜索其子女:
var $content = $(this).closest('.content');
$content.find('.date').clone().appendTo('#articleDetail');
// ...
答案 1 :(得分:1)
closest
找到与给定选择器匹配的最接近的上升符。但是,在您的标记中,<div class="date">
不是a
元素的祖先,因此找不到任何内容。应该起作用的是:
$(this).closest('.content').find('.date')
答案 2 :(得分:1)
爬上包装纸,找到里面的东西:
$(this).closest('.content').find('.date.')