javascript - 检查动画函数中的元素相等性

标签 javascript jquery equals

我有以下代码,并希望在 fadeTo 函数的第一次传递中打印“yes”,因为前两个控制台日志告诉我它是相同的元素。但它不承认他们是平等的。我在这里想念什么?

var tds = self.element.find("td:nth-child(" + (columnIndex + 1) + ")");
tds.fadeTo(options.columnFadeOutTime, 0, function() {
  window.console.log(tds.first());
  window.console.log($(this));
  if ($(this) == tds.first()) {
    window.console.log("yes");
  }
  else {
    window.console.log("no");
  }
}

最佳答案

您正在比较 2 个 jQuery 对象,它们 不同,而不是它们引用的 DOM 元素,就像这样:

var tds = self.element.find("td:nth-child(" + (columnIndex + 1) + ")");
tds.fadeTo(options.columnFadeOutTime, 0, function() {
  window.console.log(this == tds[0] ? "yes" : "no");
});

请注意,这里根本没有理由将 this 转换为 jQuery 对象。此外,由于您只是在调试,您可以只使用 window.console.log(this == tds[0]); 这会给您 truefalse 在控制台中。

另一种方法,如果你想 .queue()仅在第一次完成时运行的东西(这是你似乎想要的):

var tds = self.element.find("td:nth-child(" + (columnIndex + 1) + ")");
tds.fadeTo(options.columnFadeOutTime, 0).first().queue(function(n) {
  //do something
  n();
});

关于javascript - 检查动画函数中的元素相等性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4624690/

相关文章:

javascript - 无法使用 jquery 插件弹出窗口

jquery - MVC3 Razor jQuery 自动完成传递返回值但不显示任何内容

java - 覆盖等于不工作

javascript - 获取元素的宽度并相对于第一个元素应用于另一个元素?

jquery - $.active 在下面的 jQuery 代码中意味着什么?

java - Java API 中的 "equals"这个词是什么意思?

java - 如何在与Equal和hashcode一致的情况下实现compareTo()方法

javascript - 在外部单击时删除类

javascript - 无法从 <input> 获取值

javascript - 将 Require.js 与可插入模块结合使用