更好地解释一个例子(我对jQuery很新,提前抱歉):
// Selector for checkboxes not checked
var checkboxes = "input:checkbox:not(:checked)";
// Selector for labels relative to checkboxes not checked
var labels = "label[for=" + $(checkboxes).attr("id") + "]";
$(checkboxes + ", " + labels]).FadeTo("slow", 0.45);
这适用于复选框,但也适用于标签(奇怪的是,只选择了一个标签)。
问题是:我如何选择"附加"标签?并且,当选择了多个元素时,.attr("name")
如何实际工作(返回数组,连接列表或......什么?)。
答案 0 :(得分:1)
试试这个:
$('input:checkbox:not(:checked)').each(function(){
$('label[for=' + $(this).attr('id') + ']').add(this).fadeTo('slow',0.45);
});
答案 1 :(得分:0)
(奇怪的是,只选择了一个标签)
并且,当选择了多个元素时,
.attr("name")
如何实际工作(返回一个数组,一个连接列表,或者......什么?)。
在一组元素上调用.attr()
仅返回第一个元素的属性值。因此,在您的情况下,第一个复选框的标签被选中。
你总是可以通过循环动态地创建一堆选择器字符串,但这不是很有效。如果你的标签和复选框是可预测的HTML结构,你可以使用jQuery的traversing methods来利用它。
答案 2 :(得分:0)
// Selector for checkboxes not checked
var checkboxes = $('input:checkbox:not(:checked)'),
selector = [];
checkboxes.each(function(){
selector.push('[for="' + $(this).attr('id') + '"]');
});
// Selector for labels relative to checkboxes not checked
var labels = $('label:' + selector.join());
我想这应该足够了。