Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Jquery вопрос по функции (https://javascript.ru/forum/misc/15317-jquery-vopros-po-funkcii.html)

rostrid 21.02.2011 22:52

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);

monolithed 21.02.2011 23:32

$(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();
    });
});

rostrid 22.02.2011 00:36

Спасибо огромное! А как сделать еще чтобы допустим эта же переменная подставлялась сюда тоже: 'ul#options' + $i + ' li img'

Matre 22.02.2011 05:07

$("UL#options").eq($i).find("LI IMG");

rostrid 22.02.2011 12:56

Не могу понять почему если вынести переменную за пределы функции то он видит ее максимум на уровне первой функции, подфункция уже эту переменную не видит!

Matre 22.02.2011 13:05

Переменные действуют только в текущей области видимости.

var k;
(function () {
	var u;
	// Здесь доступны u и k
	(function () {
		var r;
		// Здесь доступны u, k и r
	})();
	// Здесь r уже недоступна
})();
// Здесь u уже недоступна

rostrid 22.02.2011 13:13

Тогда, я совсем запутался) почему не работает подстановка значения вместо переменной в данном скрипте:
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();
    });
});
}

Matre 22.02.2011 13:47

В третьей строке навешивается обработчик события DOMContentLoaded. На момент наступления этого события цикл уже завершён, переменная $z равна нулю.

rostrid 22.02.2011 14:01

Есть ли тогда рабочая альтернатива тому, что я пытался сделать?

sanderlake 22.02.2011 14:12

не пиши в цикле эту функцию $(document).ready, а цикл в ней пиши. Так:

$(function() {
  while(){}
}


Часовой пояс GMT +3, время: 14:06.