5

我想知道是否可以使用 jQuery 延迟对象来测试元素是否在 DOM 中。

这是我的想法:

function chkDOM(selector) {
  if $(selector) {
    return deferred.promise();
  }
}

$.when(chkDOM(selector)).then(function() {
  // do something
});

我不完全知道如何编写代码来实现这一点,但我希望我的问题是有意义的。如果我能让这件作品正常工作,那么我基本上可以延迟某些 jquery 插件的调用,以便它们真正正常运行。

谢谢!

4

3 回答 3

8

我假设您正在运行一个循环来定期检查选择器的存在:

var dfd = $.Deferred();
var checkSelector = setInterval(function () {
    if ($("#selector").length) {
        dfd.resolve();
        clearInterval(checkSelector);
    }
}, 1000);

dfd.done(function () {
   console.log('it has been added');
});

请注意,这$.when不是必需的;您可以.done直接在延迟对象上使用。

于 2013-01-31T02:59:21.830 回答
2

您可以使用以下内容检查元素是否存在。
您不必使用延迟。

if( jQuery(selector).length > 0 ) {
    // exists
}
于 2013-01-31T02:57:04.520 回答
0

要检查 DOM 中的元素,只需使用

if($(selector).length > 0) {
// do something

}

$(selector) 返回一个匹配选择器条件的元素数组。

于 2013-01-31T03:50:15.197 回答