0

例を挙げて説明してください(私は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);

これはチェックボックスでは機能しますが、ラベルでは機能しません(奇妙なことに、1つのラベルのみが選択されます)。

質問は次のとおりです。「添付」ラベルを選択するにはどうすればよいですか?.attr("name")また、複数の要素が選択されている場合、実際にはどのように機能しますか(配列、連結リスト、または...何を返しますか?)。

4

3 に答える 3

1

これを試して:

$('input:checkbox:not(:checked)').each(function(){
    $('label[for=' + $(this).attr('id') + ']').add(this).fadeTo('slow',0.45);
});
于 2011-07-22T00:32:43.353 に答える
0

(奇妙なことに、1 つのラベルのみが選択されます)

そして、.attr("name")複数の要素が選択されたときに実際にどのように機能するか (配列、連結リスト、または... 何を返すか)。

一連の要素を呼び出す.attr()と、最初の要素の属性値のみが返されます。あなたの場合、最初のチェックボックスのラベルが選択されています。

ループすることで、常に一連のセレクター文字列を動的に作成できますが、これはあまり効率的ではありません。ラベルとチェックボックスが予測可能な HTML 構造である場合は、jQuery のトラバース メソッドを使用して、代わりにそれを有利に使用できます。

于 2011-07-22T00:16:12.683 に答える
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());

それで十分だと思います。

于 2011-07-22T00:22:08.757 に答える