JQuery: как я могу узнать, какой элемент имеет z-индекс при нажатии на ссылку?

Как я могу найти, какой элемент имеет z-индекс, когда вы нажимаете на ссылку? Например,

HTML,

<ul class="selected">
    <li><a href="#">1</a></li>
    <li><a href="#">2</a></li>
</ul>

<ul>
    <li class="selected"><a href="#">3</a></li>
    <li><a href="#">4</a></li>
</ul>

<ul>
    <li><a href="#" class="selected">5</a></li>
    <li><a href="#">6</a></li>
</ul>

CSS,

.selected {
    z-index:10;
}

Если я нажму на ссылку 1, то ul имеет z-индекс. Если я нажму на ссылку 3, то вернусь li есть это. Если я нажму на ссылку 5, то вернусь a есть это.

Является ли это возможным?

Я полагаю, я буду использовать get(0).nodeName вернуть имя узла. Но z-index находится не на самой ссылке, а на li или же ul,

JQuery,

$("a").click(function(){

    var zindex = parseInt($(this).css("zIndex"), 10);

    if(zindex) alert($(this).get(0).nodeName);

});

1 ответ

Решение

Для начала вам нужно добавить позицию к этим элементам, иначе они не будут иметь z-index, а просто вернут auto.

.selected {
    z-index : 10;
    position: relative;
}

Затем вы смотрите на сам элемент, а затем на его родителей, чтобы увидеть, имеет ли какой-либо из них соответствующий z-индекс, например:

$("a").on('click', function(e){
    e.preventDefault();
    var Zidx    = 10,
        closest = null;

    $(this).parents().addBack().each(function() {
        if ( parseInt( $(this).css('z-index'), 10) === Zidx) {
            closest = this;
            return false;
        }
    });

    if (closest) alert( $(closest).prop('tagName') );
});

FIDDLE

Другие вопросы по тегам