jquery - 从另一个没有hasClass()的元素中窃取类

时间:2011-04-15 17:13:15

标签: jquery class jquery-mobile

我有一个清单

<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标记。

还没有工作......感谢您的帮助!

4 个答案:

答案 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+'"/>'));