【问题标题】:Compare Elements via jQuery通过 jQuery 比较元素
【发布时间】:2015-01-30 15:42:31
【问题描述】:

我想检查两个元素(一个被点击,另一个被引用)是否相同,我想要做的是:

$("#process li").click(function() {
   currentElement = $(this);
   referenceElement = $("#process li:first-child");
   if (currentElement === referenceElement) {
        $(".mark").removeClass("mark");
        $(this).addClass("mark");
   }
});

所以我想要检查点击的<li> 是否是ul#process 的第一个子元素,如果是,首先从另一个元素中删除 .mark 类,然后将其添加到点击的元素中。我没有得到任何工作结果 - 任何人的想法?


更新:

非常感谢!这是我的解决方案:

$("#processlist li").click(function() {
  currentElement = $(this);
  if (currentElement.is('li:first-child')) {
    $(this).addClass("mark");
  }
});

现在如果我点击一个

  • ,如果它是这个列表的第一个孩子,则添加 .mark 类 - 甜!
  • 【问题讨论】:

      标签: javascript jquery if-statement compare


      【解决方案1】:

      在 JS 中比较对象非常麻烦。最简单的方法是选择几个关键属性并进行比较,例如:

      if (currentElement.prop('id') === referenceElement.prop('id') {
          // rest of your code...
      }
      

      但是,鉴于您的用例,您可以使用 is:

      if (currentElement.is('#process li:first-child')) {
          // rest of your code...
      }
      

      Example fiddle

      【讨论】:

      • 是的,似乎是这样,尝试了我想到的所有方法,只是想看看是否有人比这个关键属性解决方案有更好的想法 - 谢谢!
      • 这很聪明,也谢谢你的小提琴!看看这个解决方案,似乎是最简单的方法 - 非常感谢!
      • 没问题,很高兴为您提供帮助
      • 在 Stackoverflow 上也没有找到任何解决方案。去实现它 - 你的小提琴就像轻而易举,但我不确定它是否与 .click 和 $(this) 东西一起工作:jsfiddle.net/mleyendecker/3t0573zt/6
      • 是的,这只是一个更大项目的摘录,我正在使用柜台做以后的事情。我发现您的解决方案效果很好!我只是稍微修改了代码,准备更新这篇文章。
      【解决方案2】:

      您需要从 jQuery 对象中提取 DOM 元素。您可以使用 jQuery 的get 方法。

      例如if( currentElement.get( 0 ) === referenceElement.get( 0 ) )

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-24
        • 1970-01-01
        • 1970-01-01
        • 2015-06-25
        • 1970-01-01
        • 2022-10-15
        • 1970-01-01
        相关资源
        最近更新 更多