gpt4 book ai didi

javascript - 将变量传递给 JQuery Waypoints

转载 作者:行者123 更新时间:2023-11-30 17:53:40 27 4
gpt4 key购买 nike

我正在尝试使用 JQuery Waypoints 来制作变色标题。我有一组对象显示单页网站的各个部分及其相关颜色(见下文):

var colours = new Array(
{section: 'home', colour: '#000'},
{section: 'video-audio', colour: '#EF6E7C'},
{section: 'motion-graphics', colour: '#FBC57A'},
{section: 'graphic-design', colour: '#FFF9A9'},
{section: 'web-development', colour: '#AAD693'},
{section: 'social-media', colour: '#6D8DC9'},
{section: 'photography', colour: '#8A6FB0'},
{section: 'talent', colour: '#C57AB3'},
{section: 'contact', colour: '#000'}
);

然后我使用下面的脚本为每个部分创建 JQuery Waypoints(在 HTML 中标记为 <section id="...">):

// top bar whose background-colour is being changed
var $topBar = $('.top-bar');

var offsetNum = 0, // pixels to offset waypoints
animateTime = 300, // milliseconds to animate
fallbackColour = '#333';

// len is number of sections (length of colours array)
var len = (typeof colours == 'undefined') ? 0 : colours.length;

if (len > 1) {
for (var i = 0; i < len; i++) {
var curColour = ('colour' in colours[i]) ? colours[i].colour : fallbackColour,
curSection = ('section' in colours[i]) ? colours[i].section : 'unknown';

$('#' + curSection).waypoint(function(direction) {
if (i > 0 && i < len) {
curColour = (direction === 'down') ?
(colours[i+1].hasOwnProperty('colour') ? colours[i+1].colour : fallbackColour) :
(curColour = colours[i-1].hasOwnProperty('colour') ? colours[i-1].colour : fallbackColour);
}

// first or last waypoint
$topBar.stop().animate({backgroundColor: curColour}, animateTime);
}, { offset: offsetNum });
}
}

当我只是手动为每个部分创建航路点而不是使用对象数组和 for 循环时,它起作用了,但这是很多代码重复。如果以后添加更多的部分,我想做尽可能少的修改。

我在使用警报进行调试时发现所有 Waypoints 都看到了 i作为 9(最大值)- 有没有办法传递正确的 i直接为每个 Waypoint 赋值,还是有更好的方法来解决这个问题?

最佳答案

在调用回调的那一刻,var i 的值为 9(所有回调仍然具有对 i 的相同引用).所以你应该传递实际值。例如:

for (var i = 0; i < len; i++) {

var curSection = ('section' in colours[i]) ? colours[i].section : 'unknown';

addWaypoint(i, curSection);
}

function addWaypoint( n, curSection ){

// n now has the value 0, 1, 2, etc. instead of referencing i

$('#' + curSection).waypoint(function(direction) {
console.log(i, direction); // 0, "down"
});
}

关于javascript - 将变量传递给 JQuery Waypoints,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18461258/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com