jQuery addClass,带有基于输入值的前置名称

时间:2013-11-13 16:19:53

标签: javascript jquery forms element

我可以通过执行以下操作来向表单元素添加一个类:

$("input").each(function() {
  $(this).addClass($(this).attr("name"));
});

基本上,它抓取表单值并将其作为类添加到元素中。在大多数情况下可能很好,但有时值将是数字。所以这让我有这样的事情:

<input type="radio" id="amount-5" name="submitted" value="50" class="form-radio 50">

我想,我可以将CSS作为.form-radio.50进行定位,但最好在增值类前添加一些文本。理想地

<input type="radio" id="amount-5" name="submitted" value="50" class="form-radio radio-50">

我试过了:

$("input").each(function() {
  $(this).addClass($('radio-class-' + this).attr("value"));
});

......那没用。我没有想法。 Here's my fiddle.

1 个答案:

答案 0 :(得分:3)

这实际上非常接近,但你可以简单地使用这样的字符串:

$("input").each(function() {
  $(this).addClass('radio-class-' + $(this).attr("value"));
});

$("input").each(function() {
  $(this).addClass($(this).attr("type") + '-' + $(this).attr("value"));
});

所以你也可能因input type而异:)

只是简单解释一下你为什么做不起作用:

$(this).addClass( $('radio-class-' + this).attr("value") );

$()是一个选择器(在大多数情况下),所以你基本上选择了一个不存在的radio-class-[this]类型的元素。此外, this 是当前对象的引用,我相信不能通过编写'radio-class-'+this将其转换为字符串。希望对你有意义。只需选择对象:$(this)this转换为jQuery object即可访问jQuery函数,例如.attr()将返回一个值以用作字符串