Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.03.2011, 03:32
Интересующийся
Отправить личное сообщение для vladvk Посмотреть профиль Найти все сообщения от vladvk
 
Регистрация: 11.03.2011
Сообщений: 28

jQuery и xml
Совсем измучился, нужна помощь
вот код -
$(document).ready(function(){
        $.ajax({
    type: "GET",
    url: "011pags.xml",
    dataType: "xml",
 
    success: function(xml) {
	$('#kod_tovar1').keyup(function(){
$(xml).find("product").each(function()
                        {
						var id = $(this).attr('id')

						
						if ($('#kod_tovar1').val() == id)
				{						
                $('#nazvanie1').val($(this).attr('name'))
				$('#kod_tovar1').val($(this).attr('id'))
				$('#cena1').val($(this).attr('price'))
		    } 
         });	
       });
	   
		   
		            
       }
   }); 
});
    </script>

xml файл -
<page addtobag="1" category="12" id="2">
<product height="450" id="48555" name="Набор" price="$0" width="450" x="429" y="0">
<subproduct id="75182" name="Сумка" price="$0"/>
<subproduct id="19180" name="Ручка" price="$0"/>
</product>
</page>

как видно у product есть дочка subproduct как вытащить id одновременно у родителя и дочки чтобы потом сравнить с тем что ввел пользователь.
Ответить с цитированием
  #2 (permalink)  
Старый 11.03.2011, 08:32
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,566

ну так запускай в цикле еще и цикл по детям у product.

лучше предобработай эти данные сначала, а не бегай по дереву xml при каждом отпускании кнопки:
$xml = $(xml);
// И формируй следующую структуру:
data = {};
data[id] = {};
data[id].name =
data[id].price =

Эти данные сохрани в переменной объявленной в $(document).ready и обработчик keyup выведи в ready изнутри той функции.
Ответить с цитированием
  #3 (permalink)  
Старый 11.03.2011, 09:44
Интересующийся
Отправить личное сообщение для vladvk Посмотреть профиль Найти все сообщения от vladvk
 
Регистрация: 11.03.2011
Сообщений: 28

Спасибо.
Можно поподробней по какому принципу формировать структуру data

Последний раз редактировалось vladvk, 11.03.2011 в 09:46.
Ответить с цитированием
  #4 (permalink)  
Старый 11.03.2011, 09:56
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,566

Я вроде написал:
пробегаешь по всем необходимым элементам(которые с id), имеешь им id, name, price.
Будет такой:
Код:
data[48555].name = 'Набор'
                 .price = '$0'
data[75182].name = 'Сумка'
                 .price = '$0'
...
Это будет объект со свойствами равными твоим id. Проверять так:
id = $(this).val();
if (id in data) {
  $(что то).val(data[id].name);
}
Ответить с цитированием
  #5 (permalink)  
Старый 11.03.2011, 10:14
Интересующийся
Отправить личное сообщение для vladvk Посмотреть профиль Найти все сообщения от vladvk
 
Регистрация: 11.03.2011
Сообщений: 28

Мысль уловил спасибо.
А как правильно задать значения для data
Ответить с цитированием
  #6 (permalink)  
Старый 11.03.2011, 10:30
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,566

$('[price]').each(function(){
  var id = this.id;
  data[id] = {};
  data[id].name = $(this).attr('name');
  // ...
});
Ответить с цитированием
  #7 (permalink)  
Старый 11.03.2011, 10:59
Интересующийся
Отправить личное сообщение для vladvk Посмотреть профиль Найти все сообщения от vladvk
 
Регистрация: 11.03.2011
Сообщений: 28

Господи все в голове смешалось, пните чтоли.
почему здесь - $('[price]').each(function(){
Ответить с цитированием
  #8 (permalink)  
Старый 11.03.2011, 11:06
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,566

изучайте основы джиквери !!!
Вам что надо - собрать данные с <product> и его <subproduct>. Чтобы не бегать по дереву, я их нахожу как имеющие атрибут price
Ответить с цитированием
  #9 (permalink)  
Старый 11.03.2011, 11:34
Интересующийся
Отправить личное сообщение для vladvk Посмотреть профиль Найти все сообщения от vladvk
 
Регистрация: 11.03.2011
Сообщений: 28

Спасибо
Ответить с цитированием
  #10 (permalink)  
Старый 11.03.2011, 13:53
Интересующийся
Отправить личное сообщение для vladvk Посмотреть профиль Найти все сообщения от vladvk
 
Регистрация: 11.03.2011
Сообщений: 28

Что то у меня не получается
$(document).ready(function(){
 $('#kod_tovar1').keyup(function(){
        $.ajax({
    type: "GET",
    url: "011pags.xml",
    dataType: "xml",
    success: function(xml) {
	
$xml = $(xml);
$('[price]').each(function(){
  var id = this.id;
	data[id] = {};
	data[id].name = $(this).attr('name');
	data[id].price = $(this).attr('price');
	 
id = $(this).val();
if (id in data) {
  $('#nazvanie1').val(data[id].name);
   $('#cena1').val(data[id].price);
}

   });     
                   
	   }
	   });
   }); 
});
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
XML и jquery TAII jQuery 2 03.04.2011 13:34
Как удалить из памяти весь XML документ? EisBerg Events/DOM/Window 1 03.04.2010 14:45
jQuery jTreeMenu plugin Seafnox jQuery 9 12.01.2010 21:55
jquery xml parsing Anton7777 jQuery 4 23.11.2009 17:36
Jquery + XML + Internet Explorer testdriver jQuery 12 15.10.2009 08:14