Мне нравится писать простые объяснения для толстых людей, потому что я толстый, поэтому здесь идет ...
У нас есть 5 разделов на странице, каждый с идентификатором ... div1, div2, div3, div4, div5
jQuery может это сделать ...
for (var i=1; i<=5; i++) {
$("#div" + i).click ( function() { alert ($(this).index()) } )
}
Но действительно решая проблему (и медленно ее создавая) ...
for (var i=1; i<=5; i++) {
$("#div" + i).click (
// TODO: Write function to handle click event
)
}
for (var i=1; i<=5; i++) {
$("#div" + i).click (
function(num) {
// A functions variable values are set WHEN THE FUNCTION IS CALLED!
// PLEASE UNDERSTAND THIS AND YOU ARE HOME AND DRY (took me 2 years)!
// Now the click event is expecting a function as a handler so return it
return function() { alert (num) }
}(i) // We call the function here, passing in i
)
}
Если вы не можете опустить голову, тогда это должно быть легче понять и иметь тот же эффект ...
for (var i=1; i<=5; i++) {
function clickHandler(num) {
$("#div" + i).click (
function() { alert (num) }
)
}
clickHandler(i);
}
Это должно быть понятным, если вы помните, что значения переменных функций задаются при вызове функции (но это использует ту же мысль как и раньше)