Хотя я согласен с @gaffleck в том, что вам следует изменить свой подход, я думаю, что стоит объяснить, как исправить текущий подход.
Проблема в том, что функция щелчка не получает копиюпеременная content
, но вместо этого имеет ссылку на эту же переменную.В конце цикла значение равно .view20
.При щелчке любого элемента он читает эту переменную и возвращает .view20
.
Самый простой способ решить эту проблему - переместить код в отдельную функцию.Переменная content
в этой функции является новой переменной для каждого вызова функции.
function doIt(i){
var link = ".sec" + i;
var content = ".view" + i;
$(link).click(function () {
alert(content);
});
}
$(document).ready(function () {
for (var i = 1; i < 21; i++) {
doIt(i);
}
});
http://jsfiddle.net/TcaUg/2/
Обратите внимание в скрипте, если вы нажимаете на вопрос, предупреждениеимеет правильный номер.При желании вы могли бы сделать функцию встроенной, хотя я считаю, что отдельная функция в большинстве случаев немного чище.
http://jsfiddle.net/TcaUg/1/