javascript - 传递要在 jQuery 对象上使用的方法
问题描述
所以我在这里遇到了一个小问题。我有简单的 jQuery 函数来查看给定的元素/元素是否在当前视口中。请参阅下面的代码。
function checkIfInViewport(element) {
$(element).each(function() {
let divPos = $(this).offset().top,
topOfWindow = $(window).scrollTop();
if (divPos < topOfWindow + 600) {
$(this)
.addClass('animated bounceInLeft')
.css('opacity', 1);
}
});
}
我的问题是如何摆脱对 addClass 和 css 方法的硬编码,而是调用如下函数:
checkIfInViewport(element, {methods I want to use});
所以我不必指定我想对函数本身的元素做什么,我想将我想要它做的事情传递给函数。
谢谢!
解决方案
您可以将逻辑提取到函数中,并将其作为参数传递给函数。这通常被称为callback
.
function checkIfInViewport(element, callback) {
$(element).each(function() {
let divPos = $(this).offset().top,
topOfWindow = $(window).scrollTop();
if (divPos < topOfWindow + 600) {
callback(this);
}
});
}
function animateElementAndSetOpacity ( element ) {
$(element)
.addClass('animated bounceInLeft')
.css('opacity', 1);
}
checkIfInViewport( someElement, animateElementAndSetOpacity );
推荐阅读
- c++ - QDockWidget 垂直偏好
- javascript - Pentaho 中的 Javascript 不执行逐行操作?
- javascript - 数组的拼接会减少array.length的值吗?
- botframework - 微软团队自适应卡上的取消按钮
- r - selectInput 变量影响图表输出 - 组参数?最好使用 highcharter 输出 [Shiny app]
- android - 如何有效地使用 Dagger 2 与 MVVM 和 Clean Architecture 一个多模块 Android 项目
- python - HTTP/2 PYTHON AttributeError: 'NoneType' 对象没有属性 'write'
- python - 在 ListView 上测试 get_context_data() 会抛出 'AttributeError: object has no attribute 'object_list'
- javascript - 使用codeigniter进行ajax调用后如何在dompdf上呈现内容?
- spring-boot - 如何自定义石英调度程序每秒执行的作业数(作业/秒)?