絶対位置で設定されているleft
ため、すべて値を持つ要素のセットの最高値を取得する必要があります。左の値が最も高いleft
要素を取得する必要があるため、この要素に特定のクラスを追加できます。
window.load(function()
{
$('.elements').each(function()
{
var leftValue = $(this).offset().left;
});
});
絶対位置で設定されているleft
ため、すべて値を持つ要素のセットの最高値を取得する必要があります。左の値が最も高いleft
要素を取得する必要があるため、この要素に特定のクラスを追加できます。
window.load(function()
{
$('.elements').each(function()
{
var leftValue = $(this).offset().left;
});
});
すべての回答は 1 つのことを忘れています: 彼は、要素間の最大値ではなく、最も左の値の要素について尋ねます。
そう:
window.load(function()
{
var max = 0, $element;
$('.elements').each(function()
{
if($(this).offset().left > max)
{
max = $(this).offset().left;
$element = $(this);
}
}
}
最後に、$element
左の値が最も高い要素があります
それらを配列に追加してから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;
});
これを内部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;
window.load(function(){
var max = 0;
$('.elements').each(function() {
var leftValue = $(this).offset().left;
if ( leftValue > max )
{
max = leftValue;
}
});
});
変数はmax
最高です。
max
私が知っている組み込み関数はありませんが、可能です
window.load(function(){
var maxLeft = 0;
$('.elements').each(function() {
var leftValue = $(this).offset().left;
if (leftValue > maxLeft) {
maxLeft = leftValue;
}
});
console.log(maxLeft);
});
あなたがする必要があるのは、のスコープの外に変数を保持することですeach
。次に、見つけた他のすべての値と自分の値を比較し、最も高い値を割り当てます。
window.load(function()
{
var leftValue = 0;
$('.elements').each(function()
{
maxLeft = $(this).offset().left;
if (maxLeft > leftValue)
{
leftValue = maxLeft;
}
});
});
ここでは、再帰性を使用した代替: 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
間違った使い方やバグを防ぐためにパラメータを削除しました。