问题描述
|
我有一个清单
<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-\“ steal \”每个li的第二个类,插入一个img元素并将被盗的类附加到它。我不能使用hasClass,因为类每次都不同。
有人可以帮助我纠正以下问题:
var thief = $(\'.thisList li a\').className.split(/\\s+/);
var booty = thief[1];
$(\'.thisList li a\').after(\'<img class=\"someOtherClass\'+booty+\'\" />\');
我正在尝试将a的所有类放入一个数组中,然后窃取该数组的第二个元素并将其附加到插入的img标签上。
尚无法使用...感谢您的帮助!
解决方法
$(\'.thisList li a\')
产生一个集合,而不是单个元素,因此您需要对其进行迭代。在构建图像时,您还会缺少空格。
$(\'.thisList li a\').each(function() {
var thief = this.className.split(/\\s+/);
var booty = thief[1];
$(this).after(\'<img class=\"someOtherClass \' + booty + \'\" />\');
});
,您必须遍历链接,并分别处理每个链接。否则,您将无法获得它们各自的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
,它不起作用的原因是因为$(\ .. 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?哇,两个人都击败了我!
,经过测试和工作:
var classString = \'\';
$(\'.thisList li a\').each(function(){
var elements = $(this).attr(\'class\').split(\' \');
classString += \' \' + elements[1];
});
$(\'.thisList\').after($(\'<img class=\"someOtherClass\'+classString+\'\"/>\'));