Причина, по которой код не работает, заключается в том, что переменная n не вычисляется во время цикла.
Вы создаете анонимную функцию в цикле, который вы передаете функции mousewheel
, поэтому код в анонимной функции не выполняется, пока колесо мыши даже не появится. К тому времени значение переменной n равно 10, или, возможно, что-то совершенно другое, если вы используете переменную где-либо еще в коде.
Если вместо этого вы используете функцию Function
для создания функции из строки, вы можете вставить текущее значение переменной n в код:
for(var n=0; n<10; n++) {
$('#content-scroll' + n).mousewheel(
Function('event', 'delta',
'if (delta > 0) sliderUp(' + (n-1) + ');' +
'else if (delta < 0) sliderDown(' + (n-1) + ');' +
'return false; // prevent default'
)
);
}
Однако, должно ли это быть (n-1)? Должно ли событие mousewheel для элемента content-scroll0
вызывать sliderup(-1)
?