我试图在单击'.sbSelector'时将窗口向下滚动200像素,如果被单击的元素(即'.sbSelector')位于距窗口底部底部200像素以下的位置。
$(document).on('click', '.sbSelector', function(){
var windowHeight = $(window).height();
var drpdwnOffsetTop = parseFloat($(this).offset().top - $(window).scrollTop());
if(parseFloat(windowHeight - drpdwnOffsetTop) < 200){
var temp = $(window).scrollTop() + 200;
$('html, body').animate({scrollTop: temp}, 500, function(){
**// How to get the instance of current '.sbSelector' here**
**// $(this) ll point to $(html,body), where as i need a reference to the current $('.sbSelector')**
});
}
});
我的查询是如何在$('html,body')。animate函数回调中获取当前'.sbSelector'的实例。 Bcoz文档中可能有许多“ .sbSelector”元素,我想指向动画回调中当前单击的“ .sbSelector”。
最佳答案
请查看JavaScript Scope以获取有关全局变量的更多信息。
$(document).on('click', '.sbSelector', function(){
var windowHeight = $(window).height();
var drpdwnOffsetTop = parseFloat($(this).offset().top - $(window).scrollTop());
var that = $(this);
if(parseFloat(windowHeight - drpdwnOffsetTop) < 200){
var temp = $(window).scrollTop() + 200;
$('html, body').animate({scrollTop: temp}, 500, function(){
console.log(that);
});
}
});
或者,您可以将其绑定到Browser Object Model:
$(document).on('click', '.sbSelector', function(){
var windowHeight = $(window).height();
var drpdwnOffsetTop = parseFloat($(this).offset().top - $(window).scrollTop());
window.that = $(this);
if(parseFloat(windowHeight - drpdwnOffsetTop) < 200){
var temp = $(window).scrollTop() + 200;
$('html, body').animate({scrollTop: temp}, 500, function(){
console.log(window.that);
});
}
});
注意:在窗口对象上显式设置它时,请注意不要覆盖窗口对象的当前属性。此外,这在某些环境(例如
node.js
)中不起作用。关于javascript - 如何在jQuery的内部选择器回调函数中获取当前父选择器的实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40903267/