Javascript 如何在页面加载时运行附加到特定元素的jQuery函数? 我的问题

Javascript 如何在页面加载时运行附加到特定元素的jQuery函数? 我的问题,javascript,html,jquery,Javascript,Html,Jquery,首先,我对jQuery非常陌生,所以我确信这非常简单,但我真的不知道如何做。我目前编写了一个jQuery函数,它返回特定元素的滚动位置,并将该值作为进度条在页面其他位置的百分比高度。见下文: $(.contentOuter”).滚动(函数(){ var h=$(“.content”).height();//要滚动的元素的总高度 var vh=window.innerHeight-96;//我正在滚动的视图框的高度 var sp=(this.scrollTop/(h-vh))*100;//滚动位置

首先,我对jQuery非常陌生,所以我确信这非常简单,但我真的不知道如何做。我目前编写了一个jQuery函数,它返回特定元素的滚动位置,并将该值作为进度条在页面其他位置的百分比高度。见下文:

$(.contentOuter”).滚动(函数(){
var h=$(“.content”).height();//要滚动的元素的总高度
var vh=window.innerHeight-96;//我正在滚动的视图框的高度
var sp=(this.scrollTop/(h-vh))*100;//滚动位置(我的问题片段)
var spb=$(“.progressLineFill”);//进度条元素
spb.height(sp+“%”;//设置进度条的高度
});
我想在页面加载后立即运行这个相同的函数(以防元素已经滚动了一点),但是因为我已经包含了
this.scrollTop
,我不知道如何翻译它。我尝试设置一个变量来替换
this.scrollTop
中的
this
,但它似乎完全破坏了一切。见下文:

var$elem=$(“.contentOuter”)//新变量替换“this”的需要
$(“.contentOuter”).scroll(函数(){
var h=$(“.content”).height();
var vh=窗内高度-96;
var sp=($elem.scrollTop/(h-vh))*100;//应用的新变量
控制台日志(sp);
var spb=$(“.progressLineFill”);
特殊目的地高度(sp+“%”);
});
我尝试记录
sp
(我的滚动位置变量)的值,在这个配置中我只得到了“NaN”。再说一次,我对jQuery真的没有经验

我的目标 我想隔离这个函数,并能够调用它,在滚动和加载

结论 再说一次,我知道这可能是超级简单,我会喜欢任何建议

如果我不清楚什么,请告诉我,我会更新问题。

像这样

constmyscroll=function(){
var h=$(“.content”).height();//要滚动的元素的总高度
var vh=window.innerHeight-96;//我正在滚动的视图框的高度
var sp=($(this.scrollTop()/(h-vh))*100;//滚动位置(我的问题片段)
var spb=$(“.progressLineFill”);//进度条元素
spb.height(sp+“%”;//设置进度条的高度
};
$(函数(){
$(“.contentOuter”)
.滚动(myScroll)
.触发(“滚动”);
});  
或者保存元素

let$outer;
const myScroll=函数(){
var h=$(“.content”).height();//要滚动的元素的总高度
var vh=window.innerHeight-96;//我正在滚动的视图框的高度
var sp=($outer.scrollTop()/(h-vh))*100;//滚动位置(我的问题片段)
var spb=$(“.progressLineFill”);//进度条元素
spb.height(sp+“%”;//设置进度条的高度
};
$(函数(){
$outer=$(“.contentOuter”);
$outer.on(“滚动”,myScroll)
myScroll();
});  

也许这样的解决办法会奏效

 let $elem = $('.contentOuter'), yourFunction;

 yourFunction = () => {
      //your code
 }

 $(window).load(yourFunction())
 $elem.sroll(yourFunction())

您可以使用:$(document.ready(function(){console.log(“ready!”);})
$elem.scrollTop是一个方法,因此需要调用它
$elem
是一个jQuery元素,而
this
(在
.scroll
回调中)是一个原生DOM元素(它有一个普通的
.scrollTop
属性,它不是一个方法)。这是否回答了您的问题。顺便说一句,如果您是初学者,这种混乱是我不建议您使用jQuery的原因之一。@SebastianSimon-Perfect!我把它改成了
$elem.scrollTop()
,它工作得很好。谢谢大家!<代码>$(“.contentOuter”).scroll(函数{}).trigger(“scroll”)
感谢您的回答,这并不能解决我最初的问题,尽管我无法让
scrollTop
工作,但我必须将
这个
放在它前面,因为我将它用作DOM元素而不是方法。