3

これは、私が遭遇したjQueryの問題であり、誇りに思っていない方法を使用して常に解決する必要があります。

後で評価するために要素のコレクションを保存しようとしています。問題は、関数にアクセスして適用しようとするたびに、エラーコンソールが関数ではないことを報告することです。私は、jQuery がどのように機能するかについて誤解していると確信しています。とはいえ、正しい方向に向けられることを望んでいます。私が使用しているコードは次のとおりです。

var products = $('ul.products');
var productLists = []
$.each(products, function (i) {
    productLists[i] = products[i].children('li');
    console.log(productLists[i]);
});

ここに私が得るエラーがあります:

Uncaught TypeError: Property 'children' of object #<HTMLUListElement> is not a function
4

2 に答える 2

6

HTMLElement から jQuery メソッドを呼び出そうとしています。新しい jQuery オブジェクトで要素参照をラップしてみてください。

productLists[i] = $(products[i]).children('li');

$.eachでは、キーワードを使用して、this処理中の現在のアイテムを参照できます。したがって、 を呼び出す代わりに、次のproducts[i]ように簡単に言うことができますthis

$.each( products, function() {
  productsList.push( $(this).children("li") );
});

また、選択を行うと、jQuery は要素への参照のコレクションを既に保存していることにも注意してください。

var productList = $("ul.products li"); // All list items in ul.products

後で必要に応じて、これらすべてを操作できます。それらの独自のコピーが必要な場合は、後で改ざんしたいときに確実に存在するようにするには、次を使用できます.clone

var productList = $("ul.products li").clone();
于 2012-05-25T04:03:25.907 に答える
0

jquery コレクション オブジェクトで each メソッドを直接使用できます。したがって、同じことを行う別の方法は次のようになります。

$('ul.products').each(function(){
  productsList.push( $(this).children("li") );
})

選択の問題ですが、jQuery コレクションを扱うときは常にこのアプローチを好んでいました。

于 2012-05-25T04:51:07.397 に答える