事件很好,但由于没有用于外观的本机事件,事件需要知道何时添加项目,以便可以手动触发事件。您可以使用轮询来测试某物的外观并在它出现时执行操作。这对于添加到您无法控制的内容(例如来自用户输入、ajax 或其他程序)的内容非常有用。
setInterval(function() {
$('.my-element-class:not(.appeared)')
.addClass('appeared')
.each(function() {
console.log("here I am!")
});
}, 250);
这将每秒按类名(或您提供的任何其他选择器标准)检查元素的外观 4 次,并在出现新项目时运行代码。一旦看到一个项目,就会添加 .appeared 类以防止再次检测到该实例。如果您只想测试一种外观,您可以简化并在检测后关闭轮询。
var testAppearTmr = setInterval(function() {
if ($('.my-element-class').length) {
clearInterval(testAppearTmr);
console.log("here I am!")
}
}, 250);
jQuery出现插件是围绕这些技术构建的,并且具有更多选项,例如测试项目是否在视图区域中,但如果您要做的只是测试添加到 dom 的一些项目,上面的代码是比插件更省钱。