Это потому, что к тому времени, когда ваше событие запускается, цикл завершается, и все они используют последнее значение в i, а не значение, которое было при регистрации события.
Это должно работать для селектора,
$(".block"+i).click(function ()
Это должно генерировать "block1", "block2" и т. Д. И назначать событие.
$("#fade"+i).fadeIn("slow").fadeOut("slow");
alert (i);
эти строки, хотя все они используют i
,и i
остается живым как замыкание, и мне назначается от 1 до 7, и к тому времени, когда ваше событие запускается, i = 7, поэтому каждый раз, когда вы нажимаете «.block1» и т. д., он будет только исчезать # fade7 и помещатьalert (7).
Попробуйте как:
$(document).ready(function () {
for (i=1; i<7; i++) {
alert(i);
(function (i) {
$(".block"+i).click(function () {
$("#fade"+i).fadeIn("slow").fadeOut("slow");
alert (i);
});
})();
}
});