2013-07-06 108 views
0

data.xml中

<?xml version="1.0" encoding="utf-8"?> 
<cars> 
    <car company="TOYOTA"> 
     <product>Prius</product>  
    </car> 
    <car company="TOYOTA"> 
     <product>New Fortuner</product> 
    </car> 
</cars> 

的index.html

<html> 
<head> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"> 
    </script> 
    <script type="text/javascript"> 
    $(document).ready(function() { 
     $('#car').click(function() { 
      $.get('data.xml',function(data){ 
       $('#content').empty(); 
       $(data).find('car').each(function(){ 
        var $car = $(this); 
        var html = '<div class="data">';      
        html += '<h3>' + $car.attr('company') + '</h3>'; 
        $('#content').append(html); 
       });       
      }); 
      return false; 
     }); 
    }); 
    </script> 
</head> 
<body> 

<a href="#" id="car">Car</a> 
<div id="content"> 
</div> 
</body> 
</html> 

上面的代码是从这里取:http://www.phpeveryday.com/articles/jQuery-AJAX-and-XML-P970.html

问:

在index.html中,$(data).find('car').each,这是如何工作的:$(data)?通常我会看到$('selector'),如$('.class')$('#id'),但数据是xml文件。任何人都可以向我解释这一点?谢谢。

+1

在成功回调中,'data'不是XML *文件*,它是XML *文档根节点*。想想'$(document.body)'是如何工作的 - 它基本上是一样的。 – DCoder

+0

或者'data'是一个XML字符串,它和$(“

Test
”)的作用相同,即它为你创建元素(不需要将它们添加到页面中)。虽然你不应该用XML来做到这一点,但只要HTML。无论哪种方式,阅读['$()'文档](http://api.jquery.com/jquery)都无妨。 – nnnnnn

回答

0
$.get('data.xml',function(data) 

之后,你已经把这个调用数据中的整个XML内容。所以'数据'包含汽车标签。

然后

$(data).find('car').each(function(){ ... }) 

查找数据中的每个“车”的标签,即XML内容

FYI:更好地了解使用调试工具,如萤火虫,并做一步步分析您的javascript代码

+0

好吧,基本上我想知道的是:'data'和'$(data)'有什么区别? – user2507818

+1

@ user2507818:'data'是一个字符串或DOM元素,'$(data)'将'data'传递给jQuery函数并返回一个jQuery对象。这就像问“42'和'foo(42)'”有什么区别。 –