2011-01-30 6 views
1

この構文で何が問題になっていますか?jquery first child構文

var on_a = 0; // declared outside document ready 

on_a = $("#sb_results > a:first"); 

$(on_a + " .sbr_row").addClass('sbr_row_act'); 

sb_url = $(on_a).attr('href'); 

これはどのように違いますか?

$("#sb_results > a:first .sbr_row").addClass('sbr_row_act'); 

sb_url = $("#sb_results > a:first").attr('href'); 

最後のものは動作しますが、最初のものは動作しません。

答えて

3

on_aはjQueryオブジェクトであるため、このように見て終わるだろうそのtoString表現、連結している:あなたが欲しい

"[object Object] .sbr_row" 

されています:

on_a = $("#sb_results > a:first"); 
on_a.find(".sbr_row").addClass('sbr_row_act'); 

...どの

$("#sb_results > a:first .sbr_row").addClass('sbr_row_act'); 

セレクタ内のスペースはa:firstおよび.sbr_rowは、descendant-selector(docs)であり、find()(docs)メソッドを使用するのと事実上同じです。もし on_a にjqueryのオブジェクトを割り当て、その後、文字列連結でそれを使用している最初のもので

+0

はどうもありがとうございました:) – Alexander

+0

@Alexanderを:あなたは非常に歓迎しています。 – user113716

0

on_a = $("#sb_results > a:first"); 
$(on_a + " .sbr_row").addClass('sbr_row_act'); //here on_a is a jquery object not the string "#sb_results > a:first" 

あなたはそれが第二バージョンと論理的に同じになり、次のように変更した場合:

on_a = $("#sb_results > a:first"); 
$(".sbr_row", on_a).addClass('sbr_row_act'); // or on_a.find(".sbr_row").addClass('sbr_row_act'); 
関連する問題