jQuery найти предшествующий элемент, не являющийся предком - PullRequest
3 голосов
/ 08 сентября 2011

Как сопоставить элемент, предшествующий родительскому элементу текущего.

.parents('form') и .closest() не выполняет работу, потому что это не элемент предка

.prev() не работает, потому что это не брат

Пример html:

<div class="somerandomname">
    <div class="contents">
        <h3 class="title">sadois</h3>
        <strong>strong</strong>
        <h3 class="nottitle">osdjia</h3>

        <div class="sod">
            <p class="paragraph">
                <a class="link1" href="#">link 1</a>
                <a class="link2" href="#">link 2</a>
                <a class="link3" href="#">link 1</a>
            </p>
        </div>
    </div>
</div>

связанный JS:

$('p>a').hover(function(){
   $(this).closest('strong').css({'background': 'red'});
}, function(){
   $(this).closest('strong').css({'background': 'transparent'});
});

jsFiddle

Ответы [ 4 ]

2 голосов
/ 08 сентября 2011

это то, что вы пытаетесь сделать?

$(this).closest('.sod').siblings('strong')

http://jsfiddle.net/D3xBz/1/


Вы можете сделать это и так:

$(this).closest('.contents').find('>strong')

при условии, что в вашем фактическом коде есть .contents div

1 голос
/ 08 сентября 2011

Вы можете использовать closest () , чтобы соответствовать элементу <div> предка, выставляющему класс sod, затем использовать prevAll () с : last селектор, соответствующий предыдущему элементу <strong>:

$("p > a").hover(function() {
    $(this).closest(".sod")
           .prevAll("strong:last")
           .css("background", "red");
}, function() {
    $(this).closest(".sod")
           .prevAll("strong:last")
           .css("background", "transparent");
});

Обновленная скрипка здесь .

1 голос
/ 08 сентября 2011

Я думаю, вы должны предположить, что знаете некоторые структуры документа.Например:

$("strong", $(this).closest('div.container')).css({'background': 'red'});

Я не верю, что есть способ предположить прохождение по мере того, как оно поднимается вверх.

0 голосов
/ 08 сентября 2011

Попробуйте

$(this).closest()

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...