我对这个东西很陌生,所以我对这个问题的基本性质表示歉意。
我为我的Wiki构建了图块显示,将文章显示为图块。我在侧面有导航按钮,以供人们浏览图块(图块容器的高度为500px,每个图块的高度为250px,可以隐藏6或7行图块)。
要处理导航按钮的更新,我使用了从其他SO来源合并而成的滚动处理程序,因此:
var scrollTimer;
$(".rsg_testtiles_display_macro_container").on('scroll', function() {
clearTimeout(scrollTimer);
scrollTimer = setTimeout(function() {
var RSTilesDisplayScrollResult = false;
if (!RSTilesDisplayScrollResult) {
$.each( $(".rsg_testtiles_display_macro_container .rsg_testtiles_display_surround[id]"),function(i,e) {
if (checkRSTilesDisplayView($(e),false)) {
updateRSTilesDisplayNavButton(false,e);
RSTilesDisplayScrollResult = true;
return false;
}
});
if (!RSTilesDisplayScrollResult) {
$.each( $(".rsg_testtiles_display_macro_container .rsg_testtiles_display_surround[id]"),function(i,e) {
if (checkRSTilesDisplayView($(e),true)) {
updateRSTilesDisplayNavButton(true,e);
RSTilesDisplayScrollResult = true;
return false;
}
});
}
}
}, 250);
});
我的问题是关于范围的-如果我在同一页面上有多个图块显示,我该如何重写它,以便更新正确的显示,而不是全部显示,或者在这种情况下,没有一个显示
我有一种感觉,我需要以某种方式将$ this传递到嵌套函数中,但这似乎无法正常工作。
我尝试了以下方法:
var tilesParentContainer = $(this);
...
scrollTimer = setTimeout(function() {
...
tilesParentContainer.each( $(".rsg_testtiles_display...
并且也尝试过
scrollTimer = setTimeout(function(this) {
我什么也没有得到,或者得到了Uncaught TypeError:b.apply不是一个函数,我完全不理解。
在此先感谢您,这让我整周都生气了。
答案 0 :(得分:0)
我能够在SO的其他地方找到一些答案。
我不知道可以将其分配给一个范围广泛的变量,然后在嵌套函数中重复使用它。
例如,我在scrollTimer旁边创建了一个var,然后在第一个on函数中将其分配给了它。然后,我可以在整个嵌套函数中使用$(varName).whatever ...对其进行适当的引用。