从 ids 的变量计算变量

发布于 2024-12-10 16:11:52 字数 685 浏览 4 评论 0原文

放置在 document.ready() 中的以下代码查找每个 .scrollable div 并创建一个变量,为每个面板提供一个 id 并激活滚动脚本。

var orderit = 0;
var scrolls = {};
$('.scrollable').each(function(){
    this.id = 'scrollp' + (++orderit);
    scrolls[ 'myScroll' + this.id ] = new iScroll( this.id, { scrollbarClass: 'myScrollbar' });
});

问题是,稍后我需要通过调用脚本中嵌入的 .refresh() 方法来刷新这些变量。为此,我们需要变量名称。获取变量的一种方法是像这样计算其设置。

$('.dircore').click(function(){
    'myScroll' + $(this).attr('id').refresh();
}

这仅在 Firefox 中有效,即使 firebug 说这是一个错误,但它在其他浏览器中不起作用,并且显然不是执行此操作的正确方法。

我希望这里有足够的信息可以处理,但本质上我们需要使用要刷新的元素的 id 来计算它的变量,然后针对其变量调用 .refresh() 方法。

The following code placed in document.ready() finds every .scrollable div and creates a variable giving each panel an id and activating a scrolling script.

var orderit = 0;
var scrolls = {};
$('.scrollable').each(function(){
    this.id = 'scrollp' + (++orderit);
    scrolls[ 'myScroll' + this.id ] = new iScroll( this.id, { scrollbarClass: 'myScrollbar' });
});

The problem is that later on I need to refresh these variables by calling the .refresh() method embedded in the script. To do this we need the variable name. One way to get the variable would be to calculate its setup like this.

$('.dircore').click(function(){
    'myScroll' + $(this).attr('id').refresh();
}

This works in firefox only even though firebug says it is an error, but it does not work in other browsers and is clearly not the correct way of doing this.

I hope there is enough information to work off here but essentially we need to use the id of the element we want to refresh to work out it's variable and consequently call the .refresh() method against its variable.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

寄意 2024-12-17 16:11:52

您不能使用 jQuery .data() 函数将数据绑定到元素并稍后调用吗?这样您也可以免受循环引用和由它们引起的内存泄漏的影响。

像这样:

$(document).ready(function() { $('#scroll5').data('data', value ); });

进而:

$('.dircore').each(function() { $(this).data('data').refresh(); });

或者类似的东西。

Can't you use the jQuery .data() function to bind the data to the element, and recall it later? This way you're also safe from circular references and memory leaks caused by them.

Like this:

$(document).ready(function() { $('#scroll5').data('data', value ); });

And then:

$('.dircore').each(function() { $(this).data('data').refresh(); });

Or something like that.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文