1

だから私はこのHTMLを持っています:

<div class="videos">
    <div class="video year-2013">...</div>
    <div class="video year-2013">...</div>
    <div class="video year-2013">...</div>

    <div class="video year-2012">...</div>
    <div class="video year-2012">...</div>
    <div class="video year-2012">...</div>
</div>

私のjQueryは次の変換を行う必要があります:

<div class="videos">
    <div class="videogroup group-2013">
        <div class="video year-2013">...</div>
        <div class="video year-2013">...</div>
        <div class="video year-2013">...</div>
    </div>

    <div class="videogroup group-2012">
        <div class="video year-2012">...</div>
        <div class="video year-2012">...</div>
        <div class="video year-2012">...</div>
    </div>
</div>

私の計画は、クラスに接続されたすべての一意の年(つまり、この場合year-は を含む配列)を取得し、それぞれを反復処理して、対応する を選択し、変換を適用することでした。20132012<div>

私の質問year-は、値が一意であり、手動で入力されていないことを確認しながら、クラスから年を保持する配列を作成するために jQuery を使用するにはどうすればよいですか?

以前は、すべての要素をループしてそれらのクラスを取得しようとしましたが、追加のクラス (videoクラスなど) も含まれていました。言うまでもなく、私はただ年を取得したかったので、それは私のケースを助けませんでした.

私が以前に試したことの例:

var years = [];

$('[class*=year-]').each(function() {
    years.push($(this).attr('class'));
});

console.log(years);

クラス全体を保存していて、重複を削除していないため、コードは失敗します。どちらの方法もわかりません。

4

6 に答える 6

0

これは機能します

function wrap(year){
    $('.year-' + year).wrapAll('<div class="group-' + year + '" />');
}

wrap('2013');
wrap('2012');

http://jsfiddle.net/AeJCf/1/

于 2013-07-18T15:21:10.570 に答える
0

配列を作成する 1 つの方法は次のとおりです。

var years;
$('.video').each(function() {
    var classes = $(this).getClass().split(/\s+/);
    for(x in classes) 
        if(x.indexOf('year') !== -1) {
            years[x] = x;
});

後で個々の要素を抽出するには、$.each() を使用して何年にもわたって反復します。

于 2013-07-18T15:22:30.200 に答える
0

ここで本当に満足している解決策を思いつきました。回答ありがとうございます。

var years = []; // He'll be holding our values soon.

// Loop through elements with the class `year-` in them.
$('.videos [class*=year-]').each(function() {
    var year = $(this).attr('class').match(/year-(\d*)/)[1]; // Regex gets the year (2013, 2012, etc.)

    // If the array doesn't have the year, we add it.
    if ($.inArray(year, years) == -1) {
        years.push(year);
    }
});
于 2013-07-18T15:35:38.763 に答える