2012-09-06 64 views
1

我觉得这是一个愚蠢的简单问题,但最近我一直在做这么多的CSS工作,我感觉有点生疏。所以,我有几个带有classname:和class:属性的按钮。基本上,我想要做的就是获取classname属性的值并将其附加到类中。只有带有className的按钮需要添加其内容。有没有办法将一个属性的值附加到另一个属性?

classname="blah_btn blah_btnGrey" class="blah blah blah foo foo" 

我会写这样的:

if ($('#ui-button').has("className")) { 
$(("className").val()).appendTo("class"); 

或更多的东西沿着线:

$("button").each(function() { 
//do stuff 

});

还是我在完全错误的球场?再次,任何帮助,不胜感激。

+2

是这些属性还是元素名称? '.has('className')'正在寻找''元素。如果你想要一个“有属性”的测试,试试['.is('[className]')'](http://api.jquery.com/has-attribute-selector/)。 –

回答

2

首先,请不要使用属性调用className。这是作为解决class属性的方式保留的,因为class是javascript中的保留字。因此,如果您使用名称为classclassName的属性,则最终可能很难通过javascript单独获取它们。这可能是一团糟。为实际上并非class的那个选择一个更独特的名称。

要添加的类别属性,你只想用.addClass()

$('#ui-button').addClass("blah_btn") 

jQuery的`addClass()是足够聪明,不添加它,如果它已经存在。


如果你想获得一个属性并将其添加到实际的类,你可以这样做:

$('#ui-button').addClass($(elem).attr("myAttribute")); 

如果你只是想一个属性添加到另一个,你可以这样做:

var target = $('#ui-button'); 
target.attr(target.attr("myAttribute") + $(elem).attr("myAttribute")); 
+0

IE7无法识别类,这就是我使用className的原因。 – The31StReaper

+1

@ The31StReaper - 使用jQuery时,可以使用类方法,因此不必直接寻址类属性。如果使用简单的Javascript,你绝不应该(几乎)使用javscript中的'.class' - 总是使用'.className'。在你的HTML中,总是使用'class =“xxx”'。你的问题使用两种形式,在这方面非常混乱。看起来你认为你有两个不同的属性。 – jfriend00

+0

我明白你的观点。对不起,男人,我想我应该进一步澄清。这是一个漫长的一天。 – The31StReaper

1

这就是你需要的吗?

$.each($('#ui-button.className'), function() { 
    var $element = $(this); 
    $element.addClass($element.val()); 
}); 
-1

这个怎么样?

$('button[className]').each(function(){ 
    var classNameValue = $(this).attr('className'); 
    var classValue = $(this).attr('class'); 
    $(this).attr('class', classValue + classNameValue); 
}); 
+1

但这并没有做任何事情。它只是将当前对象'className'分配给它自己。 – jfriend00

+0

“基本上,我想要做的就是获取classname属性的值并将其附加到类中。”它完全符合OP的说法。 – Russ

+0

现在你已经编辑了它 - 当然,它是不同的。我在一小时前发布的评论是正确的。现在你正试图使用​​一个名为'class'和'className'的属性。 OP的问题相当混乱,但通过阅读他们的评论,他们实际上并不需要两个单独的属性与那些令人困惑的名字。这个问题很混乱。 – jfriend00

相关问题