 
			
				13.04.2015, 15:34
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 06.03.2015 
					
					
					
						Сообщений: 19
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				загрузка данных из JSON при щелчке
			 
			
		
		
		
		Хелп. 
Имеется следующее: 
При загрузке страницы загружается информация по товарам из JSON (это реализовано) 
 
var request;
  if (window.XMLHttpRequest) {
    request = new XMLHttpRequest();
  } else {
    request = new ActiveXObject("Microsoft.XMLHTTP");
  }
  request.open('GET', 'js/info.json');
  request.onreadystatechange = function() {
    if ((request.readyState===4) && (request.status===200)) {
        var items = JSON.parse(request.responseText);
        for (var key in items) {
          var output = '<div class="goods__item" id=' + key + '>';
          output += '<img class="goods__img" src="img/' + items[key].url_small +'.jpg" />';
          output += '<div class="goods__info">';
          output += '<h2 class="goods__h2">' + items[key].name + '</h2>';
          output += '<div class="goods__desc">' + items[key].short_desc + '</div>';
          output += '</div>';
          output += '</div>';
          $('#goods_container').append(output);    // ЗАГРУЗКА ТОВАРОВ ИЗ JSON ПРИ ЗАГРУЗКЕ СТРАНИЦЫ (для каждого товара создается div своим ip (ip равен key))
          $('#' + key ).bind('click',  function(){
            console.log(items);  // в консоль выводятся нормально все объекты
            var out = '<ul class="result">';
                
                
                  out += '<p>' + items[key].name + '</p>';
                out += '</ul>';
            $('#update').html(out);  /// проблема с этой частью кода. Мне нужно реализовать, чтобы при щелчке по divу (тому диву который равен key ) с определенным товаром, выводилось в модальное окно вся информация о товаре, у меня сейчас загружается данные о последнем товаре в файле JSON
          });
        }
          
        }
      }
request.send();
И еще, правильно ли я делаю что использую .bind для отслеживания щелчка - так как на момент загрузки страницы этих divов нету  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось pensill, 13.04.2015 в 15:37.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				13.04.2015, 15:40
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 div своим ip (ip равен key) 
 
А что такое есть ip? 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				13.04.2015, 15:45
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 06.03.2015 
					
					
					
						Сообщений: 19
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от laimas
			 
		
	 | 
 
	
		div своим ip (ip равен key) 
 
А что такое есть ip?
	 | 
 
	
 
 В моем случае дивы будут иметь следующие id: 0, 1, 2, 3 (всего 4 шаблонных товара). 
Или я не правильно понял вопрос?  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				13.04.2015, 15:50
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 ID, это уже ближе к истине, но имена переменных, имена идентификаторов не должны начинаться с цифры. 
Более того, уникальный идентификатор товара в базе (да и вообще любой записи) равный 0, это нонсенс, откуда вы такой выцарапали? 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				13.04.2015, 15:58
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 06.03.2015 
					
					
					
						Сообщений: 19
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от laimas
			 
		
	 | 
 
	
		ID, это уже ближе к истине, но имена переменных, имена идентификаторов не должны начинаться с цифры. 
Более того, уникальный идентификатор товара в базе (да и вообще любой записи) равный 0, это нонсенс, откуда вы такой выцарапали?
	 | 
 
	
 
 Я это сделал для того, чтобы каждому диву с товаром присвоить уникальный id, могу сделать, чтобы были например были такие id #con_0 #con_1 #con_2  #con_0 /
 
	
 
	
		
			Сообщение от laimas
			 
		
	 | 
 
	| 
		Более того, уникальный идентификатор товара в базе (да и вообще любой записи) равный 0, это нонсенс, откуда вы такой выцарапали?
	 | 
 
	
 
 0 - это key первого товара в файле JSON.
 
Но вопрос сейчас не в этом, а том, почему при щелчке по определенному диву с информацией о товаре - в модальное окно загружается не информация по этому же товару из JSON, а информация  последнего товара в файле json  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				13.04.2015, 16:11
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 06.03.2015 
					
					
					
						Сообщений: 19
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
var output = '<div class="goods__item" id="container_'+ key +' ">';
 
Вот теперь id это : container_0 container_1 container_2 container_3
 
Но суть проблема у меня в другом  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				13.04.2015, 16:22
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Потому, что это проход в цикле, последнее значение которого и в конечном итоге будет прописано как параметр. Если устанавливать обработчик по key в цикле, то нужно его устанавливать здесь: 
 
$('#goods_container').append(output);    
 
Только добавляя его таким образом: 
 
$(output).appendTo('#goods_container').on('click', function() { 
тогда здесь можно использовать key 
}); 
 
Либо после цикла делегировать обработку щелчков элементу goods_container, а ключ получать из id текущего элемента. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				13.04.2015, 16:47
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 06.03.2015 
					
					
					
						Сообщений: 19
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от laimas
			 
		
	 | 
 
	| 
		Либо после цикла делегировать обработку щелчков элементу goods_container, а ключ получать из id текущего элемента.
	 | 
 
	
 
 Сделал. Примерно как ты говорил, вот код:
 
$('#container_' + key).bind('click', function(){
            var id = $(this).attr('id').charAt(10);
            var out = '<ul class="result">';
                  out += '<p>' + items[idd].name + '</p>';
                out += '</ul>';
            $('#update').html(out);
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось pensill, 13.04.2015 в 16:51.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				13.04.2015, 17:43
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Тогда лучше в цикле сформировать html, после цикла его вставить в родительский элемент, и делегировать ему обработку. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |