1

私は多くのネストされた、絶対に配置された要素の複雑な構造を持っています。

これらの要素には、z-indexが設定されている場合とされていない場合があります。

また、同じ親要素を持つ場合と持たない場合があります。

どの要素が「上」にあるかを返すための最良/最も簡単な方法は何でしょうか。次のようなもの...

$( "。panel")。topMost()

(事前に)あなたの助けに感謝します

4

5 に答える 5

3

z-indexが最も高い要素を意味しますか?

$(document).ready(function() {
    var array = [];
    $("*").each(function() {
        array.push($(this).css("z-index"));
    });
    var highest = Math.max.apply(Math, array);
    console.log(highest);
});
于 2013-02-19T04:51:29.663 に答える
0

jQuery UI datepickerを表示し、イベントパラメータを使用してクリックされたアイコンを把握しているときに、モーダルダイアログで同様の問題に直面しました。モーダルダイアログオーバーレイにより、新しい日付ピッカーがモーダルダイアログの上に表示されませんでした。

3つのブラウザー(IE、Firefox、およびChrome)で機能する最良のソリューションは次のとおりです。

     function topZIndex(target, selector) {
          var objs = $(target).parents(selector + '[z-index > 0]');
          var a1 = -1;
          $.each(objs, function (index, z1) {a1=(z1.style.zIndex > a1)? z1.style.zIndex : a1; });
          return a1;
      };

次のようにイベントパラメータを使用します。

    var zIndex = topZIndex(event.currentTarget, 'div')+1;

また

    var zIndex = topZIndex(event.currentTarget, '*')+1;

どちらの組み合わせでも同じ結果が生成されますが、「*」ではなく「div」を指定して指定する方が効率的です。

次に、日付ピッカーIDがdatepickerpanelであると仮定して、datepickerの新しいzIndexを設定します。

    $('#datepickerpanel').css('z-index', zIndex);

このソリューションは、モーダルダイアログの上に新しいオブジェクトを配置するための適切なz-index値を提供します。

于 2013-03-03T19:33:26.970 に答える
0

これを試して:

var z = [];
$('.panel').each(function(i, el) {
  var $panel = $(el),
      zindex = $panel.css('z-index');
  z[zindex] = $panel;
});

var topMost = z.slice(-1);
于 2013-02-19T04:57:27.930 に答える
0

プラグインがあります..topZindex

$.topZIndex("div");
于 2013-02-19T04:59:08.123 に答える
0

z-index絶対要素を指定しない場合は、それ自体last of the element will be on top of other elemsを意味last element will have a greater highest default z-index calculated by browserします。

このフィドルを試してください:http://jsfiddle.net/fLB2W/

var array = [];
$("*").each(function () {
   if ($(this).css('position') == 'absolute') {
       array.push($(this).css("position")+'<--pos & class -->'+$(this).attr('class'));
    }
});

 console.log(array[array.length-1]);
于 2013-02-19T05:30:20.533 に答える