История изменнения вопроса «Проблема с назначением функции обработчика события в JS (jQuery)»
-
Проблема с назначением функции обработчика события в JS (jQuery)
Проблема заключается в следующем.
У меня есть функция, которая в цикле обходит пять тегов area, и каждого задаёт обработчик события "click". Проблема в том, что обработчик содержит параметры (i, k), которые меняются при каждой итерации и в обработчике (внутри цикла) приходится указывать эти переменные. Но, что для меня стало открытием, при создании обработчика, он берёт не конкретное значение i и k, а ссылку на них, и в итоге я получаю 5 обработчиков с одинаковыми параметрами.
Ниже пример, где для наглядности, функцию, вызываемую в обработчике, я заменил на alert(). При click'е на любом area сообщение одно и то же (i = 5).var k = Id; for( var i = 0; i < 5; i++ ) { $j( '#area_' + i ).unbind( "click" ); $j( '#area_' + i ) .bind( "click", function(event){ alert( 'i = ' + i + ', k = ' + k ); return false; } ) .attr( 'alt', aImgs[k][0] ); k++; if( undefined == aImgs[k] ) { k = 0; } }Собственно, суть вопроса: как сделать так, чтобы для каждого обработчика alert выдавал те числа, которые были указаны ему при задании обработчика?
-
Проблема с назначением функции обработчика события в JS (jQuery)
Проблема заключается в следующем.
У меня есть функция, которая в цикле обходит пять тегов area, и каждого задаёт обработчик события "click". Проблема в том, что обработчик содержит параметры (i, k), которые меняются при каждой итерации и в обработчике (внутри цикла) приходится указывать эти переменные. Но, что для меня стало открытием, при создании обработчика, он берёт не конкретное значение i и k, а ссылку на них, и в итоге я получаю 5 обработчиков с одинаковыми параметрами.
Ниже пример, где для наглядности, функцию, вызываемую в обработчике, я заменил на alert(). При click'е на любом area сообщение одно и то же (i =6).5).var k = Id; for( var i = 0; i < 5; i++ ) { $j( '#area_' + i ).unbind( "click" ); $j( '#area_' + i ) .bind( "click", function(event){ alert( 'i = ' + i + ', k = ' + k ); return false; } ) .attr( 'alt', aImgs[k][0] ); k++; if( undefined == aImgs[k] ) { k = 0; } }Собственно, суть вопроса: как сделать так, чтобы для каждого обработчика alert выдавал те числа, которые были указаны ему при задании обработчика?
-
Проблема с назначением функции обработчика события в JS (jQuery)
Проблема заключается в следующем.
У меня есть функция, которая в цикле обходит пять тегов area, и каждого задаёт обработчик события "click". Проблема в том, что обработчик содержит параметры (i, k), которые меняются при каждой итерации и в обработчике (внутри цикла) приходится указывать эти переменные. Но, что для меня стало открытием, при создании обработчика, он берёт не конкретное значение i и k, а ссылку на них, и в итоге я получаю 5 обработчиков с одинаковыми параметрами.
Ниже пример, где для наглядности, функцию, вызываемую в обработчике, я заменил на alert(). При click'е на любом area сообщение одно и то же (i = 6).var k = Id; for( var i = 0; i < 5; i++ ) { $j( '#area_' + i ).unbind( "click" ); $j( '#area_' + i ) .bind( "click", function(event){ alert( 'i = ' + i + ', k = ' + k ); return false; } ) .attr( 'alt', aImgs[k][0] ); k++; if( undefined == aImgs[k] ) { k = 0; } }Собственно, суть вопроса: как сделать так, чтобы для каждого обработчика alert выдавал те числа, которые были указаны ему при задании обработчика?