Выберите DIV с самым высоким z-индексом - PullRequest
6 голосов
/ 05 января 2010

Пример кода, чтобы я мог начать объяснять эту проблему:

<div style="z-index:5">5</div>
<div style="z-index:2">2</div>
<div style="z-index:1">1</div>
<div style="z-index:4">4</div>
<div style="z-index:3">3</div>

(значения z-index не имеют значения, а их порядок даже меньше. Просто пример кода)

Проблема: я хочу выбрать (используя CSS или JS с jQuery) DIV с наибольшим значением z-index. В приведенном выше случае я хочу выбрать первый, поскольку его z-индекс 5 выше, чем у всех других z-индексов.

Есть ли способ сделать это? Дополнительная информация: я пишу простой диспетчер окон с jQuery + jQuery UI, а z-индексы назначаются стековой опцией в .draggable. Кажется, я не могу найти способ заставить jQuery назначить классу последний перетаскиваемый элемент, поэтому я использую самый высокий способ z-index. Любая помощь, пожалуйста? Спасибо.

Ответы [ 4 ]

2 голосов
/ 05 января 2010

Я уверен, что вы могли бы использовать событие stop, чтобы получить доступ к недавно перетаскиваемому элементу, т.е.

$('.selector').draggable({
   stop: function(event, ui) {
      $(event.target).addClass('justDragged');
   }
});

Если вы хотите увидеть все функции / переменные, связанные с событием, вы можете использовать следующее:

var str = '';
for (i in event) {
    str += i + ', ';
}
alert(str);

Это должно дать вам хорошее представление о том, что доступно вам в любом количестве параметров обратного вызова jQuery.

0 голосов
/ 05 января 2010

Я только что понял, что в .draggable есть событие 'start draging'. Как глупо с моей стороны.

$("#window-"+id+".staticwindow.stwin").draggable({
...
    start: function(e, u){
        $(".window").removeClass('active');
        $(this).addClass('active');
    }
});

Хотя мой подход больше не связан с моим первоначальным вопросом, по крайней мере, циклов нет. Я не собираюсь принимать никакого ответа, потому что это, кажется, нуждается в петле. (Хотя я немного склонен принять ответ от zarko-o, потому что это заставляет меня думать о событиях)

Спасибо всем за ваши ответы!

0 голосов
/ 05 января 2010

На вашем месте я бы просто прикрепил событие onclick на каждый div. Я думаю, что тогда Javascript или jQuery автоматически примут во внимание информацию zindex, и вы получите событие именно в DIV, где вы нажали.

0 голосов
/ 05 января 2010

Вы всегда можете протестировать против jQuery(".yourDivs").css("z-index"), как только вы добавите класс во все ваши div.

...