0

解決策が見つかりません。幅が最大の要素 (この場合はクラス elname_03 の要素) から始まるすべての要素をループするにはどうすればよいですか。

同じクラス名を持ついくつかの div 要素があり、それらをループしています。

多分それを行うセレクターがありますか?

<div class="el elname_01"></div>
<div class="el elname_03"></div>
<div class="el elname_02"></div>
<div class="el elname_03"></div>
<div class="el elname_02"></div>
<div class="el elname_03"></div>
  • elname_01 - 幅 100px
  • elname_02 - 幅 150px
  • elname_03 - 幅 200px

elname_03 からチェックを開始する必要があります。ループをすべて通過した後、すべての 02 番号をループする必要があります。eachjson からデータを解析しているので、可能であれば1 つでこれを実行したいと考えています。

4

3 に答える 3

2

jQuery オブジェクトを配列として並べ替えてから、それを反復処理することができます。

​var items = $('div');
Array.prototype.sort​​​​​​​​​.call(items, function(a,b){
    return b.offsetWidth - a.offsetWidth;
});

items.each(function() {
   console.log(this); 
});

これがJSFiddleの作業です:http://jsfiddle.net/7BzH4/

于 2012-10-11T12:10:45.140 に答える
0

これを試して、最大幅のdivを取得してください。

var maxWidth = Math.max.apply( null, $('div.el').map( function () {
    return $(this).outerWidth( true );
}).get() );

alert(maxWidth);​ 

デモ:http: //jsfiddle.net/UBdAS/

于 2012-10-11T12:14:05.153 に答える
0

これは指針となる答えです。それは改善することができます。

しかし、これは基本的な考え方です:

  http://jsbin.com/aliqam/2/edit

<input class="a" style="width:10px";/>
  <input class="b" style="width:100px";/>
  <input class="c" style="width:40px";/>

  

function SortBySize(a, b)
{
    var aName = parseInt($(a).width());
    var bName = parseInt($(b).width());
    return((aName < bName) ? -1 : ((aName > bName) ? 1 : 0));
}

テストしましょう:

前 :

console.log($("input").eq(0).width())
console.log($("input ").eq(1).width())
console.log($("input").eq(2).width())

var gg = $("input").get().sort(SortBySize);

後 :

console.log($(gg).eq(0).width())
console.log($(gg).eq(1).width())
console.log($(gg).eq(2).width())
于 2012-10-11T12:10:24.537 に答える