2017-05-21 9 views
0

このエラーに関する多くの質問がありましたが、このような状況にはあまり役に立ちませんでした。JQueryプラグインのthis.selector - 未定義の 'top'プロパティを読み取ることができません

JQueryプラグインを作成しようとしていますが、「Uncaught TypeError:未定義のトップ 'プロパティを読み取れません」というエラーが表示されます。それは "this"と関連しているようです。たとえば、これは正常に動作するようです:

$(window).scroll(function() { 
    var offsetBot = window.innerHeight - (($("#textBox1").offset().top - $(window).scrollTop()) + $("#textBox1").height()); 
    console.log(offsetBot); 
    }); 

しかし、以下の機能のこの内部、私はエラーを取得します..私は「この」を使用してみました

$.fn.offBottom= function() { 

$(window).scroll(function() { 

     if (!this.length) { 
     console.log("no element selected") 
     return; 
     } else{ 
     var offsetBot = window.innerHeight - (($(this.selector).offset().top - $(window).scrollTop()) + $(this.selector).height()); 
     }}); 
    }; 

    $("#textBox1").offBottom(); 

}); 

、「$(この) "、" this.selector "はすべて運がありません。 ありがとう

答えて

1

あなたの$(this)コンテキストは$(window)スクロール機能内に配置されました。あなたはDOMの要素を取得している理由は、このようにあなたがそのtopプロパティ

を得ることができませんあなたはこのようにその前に、あなたのDOMの要素を初期化する必要があるかもしれません[未定義]です:

$.fn.offBottom = function() { 
    var oElement = $(this); // $(this) will refer to the DOM that called the [offBottom] property method 

    $(window).scroll(function() { 
     if (oElement.length) { 
      console.log("no element selected"); 
      return false; 
     } else { 
      console.log(oElement.offset().top); 
      var offsetBot = window.innerHeight - ((oElement.offset().top - $(window).scrollTop()) + $(this.selector).height()); 
     }}); 
}; 

$("#textBox1").offBottom(); 

これはあなたのケースのために役に立てば幸い

+0

ああ助かりました。また、$(this.selector).heightをoElement.height()に変更しなければなりませんでした。ありがとう – kennsorr

関連する問題