我正在为一个非常旧的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代码,以防您还没有意识到它。