0

絶対位置で設定されているleftため、すべて値を持つ要素のセットの最高値を取得する必要があります。左の値が最も高いleft要素を取得する必要があるため、この要素に特定のクラスを追加できます。

window.load(function()
{
    $('.elements').each(function() 
    {
        var leftValue = $(this).offset().left;
    });
});
4

7 に答える 7

3

すべての回答は 1 つのことを忘れています: 彼は、要素間の最大値ではなく、最も左の値の要素について尋ねます。

そう:

window.load(function()
{
    var max = 0, $element;
    $('.elements').each(function()
    {
        if($(this).offset().left > max)
        {
            max = $(this).offset().left;
            $element = $(this);
        }
    }
}

最後に、$element左の値が最も高い要素があります

于 2014-02-10T13:32:01.753 に答える
1

それらを配列に追加してからMath.max、最大数を取得するために使用できます。

var arr = [], max = 0, $elements = $('.elements');

$elements.each(function() {
  arr.push($(this).offset().left);
});

max = Math.max.apply(null, arr);

次に$.grep、関連する要素を取得するために使用します。

var element = $.grep($elements, function (e) {
  return $(e).offset().left === max;
});

デモ

于 2014-02-10T13:12:40.287 に答える
1

これを内部window.loadまたは必要な場所で実行できます。

var max = $('.elements').toArray().reduce(function(max, elem) {
    return Math.max(max, $(elem).offset().left || 0);
}, Number.NEGATIVE_INFINITY);

0の代わりに最後の行で を使用することもできNumber.NEGATIVE_INFINITYますが、このようにして、可能な負の値を説明することもできます。

JSFiddleの例。


アップデート

@Eagle指摘しているように、これは、多くの回答と同様に、OPが実際のサイズではなく要素を望んでいたことを見逃していました。更新されたJSFiddleは、代わりにそれを提供するための手法の修正を示しています。

var maxElem = $('.elements').toArray().reduce(function(curr, elem) {
    var left = $(elem).offset().left;
    return left > curr.val ? {elem: elem, val: left} : curr 
}, {elem: null, val: Number.NEGATIVE_INFINITY}).elem;
于 2014-02-10T13:25:51.770 に答える
0
window.load(function(){

        var max = 0;
        $('.elements').each(function() {
            var leftValue = $(this).offset().left;
            if ( leftValue > max ) 
            {
               max = leftValue;
            }
        });

    });

変数はmax最高です。

于 2014-02-10T13:11:04.573 に答える
0

max私が知っている組み込み関数はありませんが、可能です

window.load(function(){
    var maxLeft = 0;

    $('.elements').each(function() {
        var leftValue = $(this).offset().left;
        if (leftValue > maxLeft) {
            maxLeft = leftValue;
        }
    });

    console.log(maxLeft);
});
于 2014-02-10T13:11:15.217 に答える
0

あなたがする必要があるのは、のスコープの外に変数を保持することですeach。次に、見つけた他のすべての値と自分の値を比較し、最も高い値を割り当てます。

window.load(function()
{
    var leftValue = 0;
    $('.elements').each(function() 
    {
        maxLeft = $(this).offset().left;
        if (maxLeft > leftValue) 
        {
            leftValue = maxLeft;
        }
    });
});
于 2014-02-10T13:12:49.253 に答える
0

ここでは、再帰性を使用した代替: http://jsfiddle.net/wared/Y762p/。フィドルを再起動せずにデモ パネルのサイズを変更できるようになったことに注意してください。

var els = $('.elements').get();
var $el = mostLeft(els);

function mostLeft(list) {    
    var biggestLeft; // saves "left" to reduce calls to .offset()
    return function rec(list) {
        var sel, $el, left; // "sel" means "selection"
        if (list.length) {
            $el = $(list[0]);
            left = $el.offset().left;
            sel = rec(list.slice(1));
            if (!sel || left > biggestLeft) {
                biggestLeft = left;
                sel = $el;
            } 
            return sel;
        }
    }(list);    
};

以前のバージョンとの変更点:

  • 元の要素リストは変更されていないため、再利用可能です。
  • sel間違った使い方やバグを防ぐためにパラメータを削除しました。
于 2014-02-18T13:30:28.297 に答える