如何使用jQuery检查DOM是否相等?

时间:2010-03-15 15:32:04

标签: 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检查这种逻辑的最佳方法是什么?

2 个答案:

答案 0 :(得分:38)

虽然您可以比较Matt显示的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"))....

答案 1 :(得分:9)

jQuery是一个对象,所以你在技术上比较两个不同(但相似)的对象,这些对象总是错误的。

尝试:

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

jQuery.get()