代码之家  ›  专栏  ›  技术社区  ›  Joseph

如何用jquery检查dom是否相等?

  •  26
  • Joseph  · 技术社区  · 14 年前

    我正在构建一个简单的列表,列表中的一个项目被选中。我通过将“选定”类应用于我想要选择的项目来实现这一点。我有两个向前和向后的按钮,它们遍历这个列表。但是,当用户到达列表中的第一个或最后一个元素时,我想做一个回发。这就是我被卡住的地方,因为我在识别当前所选项目不是第一个或最后一个时遇到问题。

    简单例子:

    <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
    

    然而,这个逻辑返回错误,这导致我相信我是以错误的方式接近这一点。

    使用jquery检查这种逻辑的最佳方法是什么?

    2 回复  |  直到 14 年前
        1
  •  38
  •   user187291    14 年前

    尽管您可以将jquery对象与matt所显示的对象进行比较,或者简单地与index运算符进行比较

    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
  •  9
  •   Matt user129975    14 年前

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

    尝试:

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

    jQuery.get()