プラグインを作成していて、各メソッド内で関数をラップしようとしていますが、プラグインが壊れています。ブロックコンテンツが「this.each」プラグイン内にラップされていない場合は機能します。複数のセレクターを渡すには、「this.eachを返す」必要があることを理解していますか?また、プラグイン内でセレクターを使用する必要をなくしたいと思います。たとえば、「#the_lead」ではなく、「this」を使用します。
(function($) {
$.fn.scroll_lead = function (options) {
var defaults = {
speedup: 500
};
var options = $.extend({}, defaults, options);
return this.each(function () {
var $window_height = $(window).height();
var $document_height = $(document).height();
var $hide_lead;
$(window).scroll(function () {
var $scrollTop = $(window).scrollTop();
if (!$hide_lead) {
if ($scrollTop > ($document_height / 2)) {
$("#the_lead").slideDown(options.speedup);
} else {
$("#the_lead").slideUp(500, function () {
$(this).hide();
});
}
}
});
$('#hide_lead').click(function (e) {
$(this).parent().parents('div').hide();
hide_lead = true;
e.preventDefault();
});
});
};
})(jQuery);