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:34. |