Как проверить равенство DOM с помощью jQuery?

В основном я создаю простой список, и один из элементов в списке выбран. Я выполняю это, если "выбранный" класс применяется к тому элементу, который я хочу выбрать. У меня есть две кнопки, которые идут вперед и назад, которые пересекают этот список. Однако, когда пользователь добирается до первого или последнего элемента в списке, я хочу сделать сообщение назад. Здесь я застрял, потому что у меня возникли проблемы с определением того, что выбранный элемент не является первым или последним.

Простой пример:

<div id="list">
    <p>item 1</p>
    <p>item 2</p>
    <p class="selected">item 3</p>
</div>

Скажем, пользователь нажимает следующую кнопку, на этом этапе я проверяю что-то похожее на это:

if (jQuery('#list p.selected') == jQuery('#list p:last-child'))
    //do post back

Однако эта логика возвращает false, что заставляет меня думать, что я приближаюсь к этому неправильно.

Каков наилучший способ проверить эту логику с помощью jQuery?

Ответ 1

Хотя вы можете сравнивать объекты jquery, как показал Мэтт, или просто с помощью оператора индекса

if($("#list p.selected")[0] == $("#list p:last-child")[0])...

это редко необходимо с jQuery. Там is лучший способ!

if($("#list p.selected").is(":last-child"))....

или наоборот, более читаемый

if($("#list p:last-child").is(".selected"))....

Ответ 2

jQuery - это объект, поэтому вы технически сравниваете два разных (но похожих) объекта, которые всегда будут ложными.

Try:

if (jQuery('#list p.selected').get(0) == jQuery('#list p:last-child').get(0))

jQuery.get()