Jquery вопрос по функции
$(function() { var idNumbers = 6; for(var i=1; i<=idNumbers; i++) { var result_class = "'" + '.image_data' + i + "'"; $('ul#options li img').click(function() { $('ul#options li img').removeClass('selected'); $(this).addClass('selected'); var imageName = $(this).attr('alt') $(result_class).attr('value', imageName); }); $('.image_url').click(function() { return false; }); } }); Помогите пожалуйста! Не могу понять почему значение переменной result_class не попадает в строчку: $(result_class).attr('value', imageName); |
$(function() { $('ul#options li img').click(function() { var $i = 6, $this = $(this), $imageName = $this.attr('alt'); while($i--) { $('.image_data' + $i).attr('value', $imageName); } $('ul#options li img').removeClass('selected'); $this.addClass('selected'); }); $('.image_url').click(function(event) { event.preventDefault(); }); }); |
Спасибо огромное! А как сделать еще чтобы допустим эта же переменная подставлялась сюда тоже: 'ul#options' + $i + ' li img'
|
$("UL#options").eq($i).find("LI IMG"); |
Не могу понять почему если вынести переменную за пределы функции то он видит ее максимум на уровне первой функции, подфункция уже эту переменную не видит!
|
Переменные действуют только в текущей области видимости.
var k; (function () { var u; // Здесь доступны u и k (function () { var r; // Здесь доступны u, k и r })(); // Здесь r уже недоступна })(); // Здесь u уже недоступна |
Тогда, я совсем запутался) почему не работает подстановка значения вместо переменной в данном скрипте:
var $z = 6; while($z--) { $(function() { $('ul#options' + $z + ' li img').click(function() { $this = $(this), $imageName = $this.attr('alt'); $('.image_data' + $z).attr('value', $imageName); $('ul#options' + $z + ' li img').removeClass('selected'); $this.addClass('selected'); }); $('.image_url').click(function(event) { event.preventDefault(); }); }); } |
В третьей строке навешивается обработчик события DOMContentLoaded. На момент наступления этого события цикл уже завершён, переменная $z равна нулю.
|
Есть ли тогда рабочая альтернатива тому, что я пытался сделать?
|
не пиши в цикле эту функцию $(document).ready, а цикл в ней пиши. Так:
$(function() { while(){} } |
Часовой пояс GMT +3, время: 13:09. |