2013-07-06 87 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)'」有什麼區別。 –