0

次のコードがあります。

var tabla_szam = 1;
var etk_szam = 1;
$(".etrend_ossze, .tabla_sel").each(function () {
   if (etk_szam == 5) {
      tabla_szam++;
      etk_szam = 1;
   }
$((this).find(":first-child")).attr("id", "tabla_" + tabla_szam + "_" + etk_szam); //i want to reach the actual .etrend_ossze and .tabla_sel
$((this).find(":second-child")).attr("id", "tabla_sel" + tabla_szam + "_" + etk_szam);
etk_szam++;
});

コンソールに次のエラーが表示されます: TypeError: this.find is not a function. $this を 1 番目と 2 番目の要素として、実際の .etrend_ossze と実際の .tabla_sel に到達したいと考えています。

4

3 に答える 3

1

交換

$((this).find(":first-child"))
$((this).find(":second-child"))

$(this).find(":first-child")
$(this).find(":nth-child(1)") //:second-child doesn't exist
于 2013-03-19T18:20:06.160 に答える
0

これは正しい方法ではありません:

 $((this).find(":first-child")).attr("id".....

そのはず:

次のいずれかの方法で:

$(this).find(":first-child").attr("id"....

またはこの方法:

$(":first-child",this).attr("id".....

うーん...でも、聞いたことも読んだこともない:second-child

于 2013-03-19T18:26:26.653 に答える
0

この行を見てみましょう:

$((this).find(":first-child"))

それでは、少し分解してみましょう。

$(
    (this).find(":first-child")
)

そのため、ブラウザーは最初に(this)(DOM 要素オブジェクトを返す) を実行し、次に を呼び出そうとしますfind$への呼び出しの結果に対してのみ jQuery 関数を呼び出しますfind$ただし、ネイティブ DOM 要素にはメソッドがないため、を呼び出すまでには至らずfind、エラーが発生します。

解決策は、余分な括弧を取り除くことです:

$(this).find(":first-child")
于 2013-03-19T18:22:53.587 に答える