我有一个清单
<ul class="thisList">
<li><a href="" class="iconViewport icon_import"><span>Import</span></a></li>
<li><a href="" class="iconViewport icon_products"><span>Artikel</span></a></</li>
</ul>
我想jquery-“窃取”每个li的第二类,插入一个img元素并将被盗的类附加到它。我不能使用hasClass,因为每次类都不同。
有人可以帮我纠正以下问题:
var thief = $('.thisList li a').className.split(/\s+/);
var booty = thief[1];
$('.thisList li a').after('<img class="someOtherClass'+booty+'" />');
我正在尝试将a的所有类放入数组中,然后窃取此数组的第2个元素并将其附加到插入的img标记。
还没有工作......感谢您的帮助!
答案 0 :(得分:3)
$('.thisList li a')
产生一个集合,而不是单个元素,因此您需要迭代它。在构建图像时,你也错过了一个空间。
$('.thisList li a').each(function() {
var thief = this.className.split(/\s+/);
var booty = thief[1];
$(this).after('<img class="someOtherClass ' + booty + '" />');
});
答案 1 :(得分:2)
您必须遍历链接,并分别处理每个链接。否则你无法获得每个属性的className
属性。 $('.thisList li a').className
无论如何都不会起作用,因为className
是DOM元素的属性而不是jQuery对象的属性。
这应该这样做:
$('.thisList li a').each(function() {
var booty = this.className.split(/\s+/)[1];
$(this).after('<img class="someOtherClass '+booty+'" />');
});
如果“窃取”该类意味着删除它,那么您也可以调用:
$(this).removeClass(booty);
更新: DEMO
答案 2 :(得分:1)
它不起作用的原因是因为$('。thisList li a')返回一个jquery对象,它没有属性className。
这是一次未经考验的尝试
$('.thisList li a'). each(function(index, el){
var class2 = el.className.split(/\s+/)[1];
$(el).after('<img class="someOtherClass '+class2+'" />');
})
为什么地球上的变量名为booty?哇,有两个人打败了我!
答案 3 :(得分:0)
经过测试和工作:
var classString = '';
$('.thisList li a').each(function(){
var elements = $(this).attr('class').split(' ');
classString += ' ' + elements[1];
});
$('.thisList').after($('<img class="someOtherClass'+classString+'"/>'));