javascript - 尝试重写已弃用的 jquery 函数 fn.click()
问题描述
我正在为一个非常古老的 wordpress 网站更新 jQuery。我有下面的功能,我正在尝试重写:
$(".smscroll").click(function(event){
event.preventDefault();
// CALCULATE DESTINATION PLACE
var dest = 0;
if ($(this.hash).offset().top > ($(document).height() - $(window).height()))
{
dest = $(document).height() - $(window).height();
}
else
{
dest = $(this.hash).offset().top;
}
// GO TO DESTINATION
$('html,body').animate({scrollTop:dest}, 1000, 'swing');
});
我意识到这.click
已被弃用。所以,我试图用以下内容替换它:
$(document).on("click", ".smscroll", function(event){
event.preventDefault();
// CALCULATE DESTINATION PLACE
var dest = 0;
if ($(this.hash).offset().top > ($(document).height() - $(window).height()))
{
dest = $(document).height() - $(window).height();
}
else
{
dest = $(this.hash).offset().top;
}
// GO TO DESTINATION
$('html,body').animate({scrollTop:dest}, 1000, 'swing');
});
我还需要清理什么来摆脱弃用?
解决方案
您的代码似乎不再包含已弃用的功能,尽管
$(document).on('click', scope, callback)
是多余的。$(scope).on('click', callback)
像这样使用:
$(".smscroll").on("click", function(event) {
event.preventDefault();
var dest = 0;
if ($(this.hash).offset().top > ($(document).height() - $(window).height())) {
dest = $(document).height() - $(window).height();
} else {
dest = $(this.hash).offset().top;
}
$('html,body').animate({
scrollTop: dest
}, 1000, 'swing');
});
当然,假设在加载了所有.smscroll
需要选择的元素之后应用事件侦听器。当然,如果您的目标是将点击事件委托给.smscroll
类,请不要使用它。
推荐阅读
- git - 如何从 git 存储库中取消链接分支?
- amazon-web-services - s3 上的 TensorFlow/Tensorboard
- python - 在 whois 包中扩展 Python 模块
- java - 尝试使用 SharedPreferences 存储和检索应用程序数据,但它没有返回所需的数据
- android - 仅在片段可见时如何调用函数
- javascript - encodeURIComponent 和内容类型:'charset: utf-8'
- javascript - 在 webpack 中找不到模块
- mysql - 这是用唯一值填充维度表的适当方法吗?
- javascript - 单击 puppeteer 中包含文本的元素
- docker - 为什么 Jenkins 缓存我旧的损坏的 Jenkinsfile?