我试图在单击'.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/

10-11 07:06