1

これは私がずっと前に学ぶべきだったものですが、どういうわけか私は決してしませんでした.

var productDivs = $('#HomeNewProducts .ProductList li');

これは、複数の li とその子を選択する単純な行です。ここで、これらの各要素からリンクを抽出して、追加する要素をリンクした後でそれを使用したいとします。

var link = $('#HomeNewProducts .ProductList li .ProductDetails a').attr('href');
productDivs.append('<a href=\"' . link . '\"><img src="#" /></a> ' );
4

3 に答える 3

4

これを試して:

var link = $('#HomeNewProducts .ProductList li .ProductDetails a').attr('href');
productDivs.append('<a href=\"' + link + '\"><img src="#" /></a> ' );

linkプラス記号は、変数を文字列に正しく挿入する必要があります。

于 2013-10-08T19:02:41.430 に答える
2

mapコレクションからプロパティのコレクションを抽出するのに適しています。

// get .`attr('href')` from each element
var links = $('#HomeNewProducts .ProductList li .ProductDetails a');
var hrefs = links.map(function(link) { 
    return $(link).attr("href"); 
});

しかし、一連の要素を反復処理し、それぞれに何かを追加したいように見えるので、JQuery が必要だと思いますeach:

$('#HomeNewProducts .ProductList li').each(function(index, element) {
    // find child link of the current element
    var link = $(element).find(".ProductDetails a").attr('href');

    // append to the current element
    $(element).append('<a href=\"' . link . '\"><img src="#" /></a> ' );
});

これは、一般的なアイデアの単純化されたフィドルです。

于 2013-10-08T19:02:08.240 に答える
0

さらに子孫を検索するときに、li要素を既にキャッシュしているためです。productDivs

次に.each()、選択した要素のグループを反復処理するために使用します

var productDivs = $('#HomeNewProducts .ProductList li');
var link = productDivs.find('.ProductDetails a').each(function(){
   // do the appending from here
   // this.href refers to the current link

   productDivs.append('<a href=\"' + this.href + '\"><img src="#" /></a>' );
});
于 2013-10-08T19:04:17.903 に答える