Как проверить на равенство 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?

26
задан Jacob Relkin 15 March 2010 в 15:34
поделиться

2 ответа

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

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

, с jQuery это редко требуется. Есть способ получше!

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

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

if($("#list p:last-child").is(".selected"))....
38
ответ дан 28 November 2019 в 07:12
поделиться

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

Попробуйте:

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

jQuery.get ()

9
ответ дан 28 November 2019 в 07:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: