jQuery插件选择器访问范围

jQuery Plugin selector access scope

本文关键字:范围 访问 选择器 插件 jQuery      更新时间:2023-09-26

我正在尝试访问下面闭包中jQuery对象的选择器,这样我就不必指定和/或缓存它。如果我用$this替换$(".the_lead"),它将不会执行它的操作。

调用插件

$(".the_lead").scroll_lead({speedup: 400});

阻止

var $this = $(this);
$(window).scroll(function() {
    var window_height = $(window).height();
    var document_height = $(document).height();
    var hide_lead;
    var scrollTop = $(window).scrollTop();
    console.log($this);
    if(!hide_lead){
        if(scrollTop>(document_height/2)){
            $(".the_lead").slideDown(options.speedup);
            }else{
            $(".the_lead").slideUp(500,function(){
                $(".the_lead").hide();
          });}
         }

        $('#hide_lead').click(function(e){
            //$(".the_lead").parent().parents('div').hide();
            hide_lead = true;           
            e.preventDefault();
        });     
    }); 

$的控制台输出(this):

[selector: ".the_lead", context: document, constructor: function, init: function, selector: ""…]
context: #document
length: 0
selector: ".the_lead"
__proto__: Object[0]
注意控制台输出的length: 0。窗口滚动事件或多或少会激发用户移动的每个像素。如果没有看到更多插件的代码,我无法确定,但我敢打赌,只有当滚动事件第一次触发时,这才是正确的。

此外,缓存似乎只想缓存.the_lead元素中的一个,不是吗?这就是代码的读取方式。使用$this = $(this);,但在函数中,您似乎想要类.the_lead的所有元素。试着像这样直接缓存它$this=$('.the_lead');