2

次のようなリストがあります。

<div id="post-1" class="post"></div>
<div id="post-2" class="post"></div>
<div id="post-3" class="post"></div>
<div id="post-4" class="post"></div>
<div id="post-5" class="post"></div>

#post-1 と #post-2 を選択して何かしたい。次に、#post-3 と #post-4 を選択して何かを実行し、次に最後の 1 つを取得して何かを実行します。これは多くの div にまたがるので、ある種のループにする必要があります。

擬似コードは次のようになります。

var maxHeight = 0;
jQuery('.post-block:two-at-time').each(function(){
     var height = jQuery(this).height();
     if( height > maxHeight) {
          maxHeight = height;
     }
});
jQuery('.post-block:two-at-time').height(maxHeight);

これを行う最善の方法についてのアイデアはありますか? ありがとう!

4

4 に答える 4

2
var $post = $('.post'),
    $even = $post.filter(':even'),
    $odd = $post.filter(':odd')

    for (var i = 0; i < $even.length; i++) {
        var $a = $even.eq(i).add( $odd.eq(i) );
        // ... ?
    }

http://jsfiddle.net/E3kbP/

于 2013-02-07T00:19:41.723 に答える
1

これはおそらく最もきれいな方法ではありませんが、通常のforループを使用して最小値/最大値を反復処理し、次を使用できます.slice

for (var start = 0, end = 2; start < $(".post").length; start += 2, end += 2) {
    jQuery('.post').slice(start, end).each(function () {

http://jsfiddle.net/ExplosionPIlls/EJY5W/

于 2013-02-07T00:11:51.633 に答える
0

たぶん、この方法でうまくいくでしょう..

for( var id = 2; id < $('.post').length; id=id+2){
     var height = $('post-'+(id-1)).height() + $('post-'+id).height(); // I guess this way should work
     if( height > maxHeight) {
          maxHeight = height;
     }
});
于 2013-02-07T00:21:14.873 に答える
0

これはまた、.post要素を 2 つにグループ化し、正しいものを探しmaxHeight、すべての要素の高さをmaxHeight..に設定します。

var count = maxHeight = 0;
$('.post').each(function ()
{
    if (count % 2 == 0)
    {
        var even = $(this).height(); odd = $(this).next('div').height();
        if(even > maxHeight || odd > maxHeight)
            (even >= odd) ? maxHeight = even : maxHeight = odd;
    }
    count++;
}).css('height', maxHeight);
于 2013-02-07T00:47:12.817 に答える