我有以下代码,并希望在 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]);
这会给您 true
或 false
在控制台中。
另一种方法,如果你想 .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/