我试图将每个独立锚点的不同类添加到它们的父<li>
标记中。一般的HTML代码如下所示:
<ul class="list">
<li>
<div>Title Text</div>
<span class="tag"><a href="#" class="Class1">Class1 Link</a>, <a href="#" class="Class2">Class2 Link</a>, <a href="#" class="Class3">Class3 Link</a></span>
</li>
<li>
<div>Title Text</div>
<span class="tag"><a href="#" class="Class4">Class4 Link</a>, <a href="#" class="Class5">Class5 Link</a>, <a href="#" class="Class6">Class6 Link</a></span>
</li>
</ul>
最近的jQuery脚本在一定程度上起作用,但它只是抓住遇到的第一个锚类,并将其添加到无序列表中的每个<li>
标记中。
$(window).load(function () {
$('span.tag a').each(function(){
var tagClass = $(this).attr("class");
$('span.tag a').closest('li').addClass(tagClass);
});
任何帮助,使其正常工作,将不胜感激。
发布于 2014-01-05 03:49:38
您应该使用$(this)
而不是$('span.tag a')
,后者选择所有a
元素,然后选择所有父li
元素。还可以使用.addClass()
回调函数:
$('ul.list > li').addClass(function() {
return $('span.tag a[class]', this).map(function() {
return this.className;
}).get().join(' ');
});
http://jsfiddle.net/UXSa7/
发布于 2014-01-05 03:47:18
您应该使用this
引用为该实例找到正确的父实例,而不是再次选择它们,这将导致jQuery接受第一个a
标记父li
,然后获取该元素的类名。
$(window).load(function () {
$('span.tag a').each(function(){
var tagClass = $(this).attr("class");
$(this).closest('li').addClass(tagClass);
});
});
您还可以在DOM准备就绪时,而不是在加载所有资产时,使用$(function(){
而不是$(window).load(function () {
来运行此操作。
https://stackoverflow.com/questions/20929802
复制相似问题