试图重写一个不推荐使用的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类,则不要使用此选项。

供参考,https://api.jquery.com/category/deprecated/真的很有用,这里给出了不推荐使用的函数等的替换。在这种情况下:

  • 分别使用.on( "click", handler ).on( "click", eventData, handler )而不是.click( handler ).click( eventData, handler )

  • 使用.trigger( "click" )而不是.click()

还有一个对jquery的呐喊,将其与浏览器控制台日志一起迁移,以清除旧的jquery代码,以防您还没有意识到它。

最新更新