1

我正在尝试将元素定位到 xml 文档中的三个级别。奇怪的是,它通过 each 函数 13 次,但每次都没有返回任何东西。

xml:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<webpages xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <course id="1">
        <photos>
            <photo>image1.jpg</photo>
            <photo>image2.jpg</photo>
            <photo>image3.jpg</photo>
            <photo>image4.jpg</photo>
            <photo>image5.jpg</photo>
            <photo>image6.jpg</photo>
            <photo>image7.jpg</photo>
            <photo>image8.jpg</photo>
            <photo>image9.jpg</photo>
            <photo>image10.jpg</photo>
            <photo>image11.jpg</photo>
            <photo>image12.jpg</photo>
            <photo>image13.jpg</photo>
        </photos>
    </course>

</webpages> 

ajax 调用成功:

success: function(entry) {
        $self.html("");        // removes the "loading..." notification from container
        $self.append('<h1>Multimedia Gallery</h1>');
        // gets and parse each child element in <webpages>
        $self.append('<div class="galleryTitle"><h4>Photos</h4></div>');
        $(entry).find('photos').children().each(function() {
          // gets the "id", "title", and "url" of current child element
            var elm = $(this);
            var photo = elm.find('photo').text();
            alert(photo);


            // display data
            $self.append('<div class="photos"><img src="img/photos/'+photo+'" alt="" /></div>');

        });

如果使用 done: 是一个成功的方法,那么我将进行重组,但我认为这不是问题所在。有什么想法吗??如果您需要更多信息,请告诉我您还需要什么其他代码,谢谢

4

2 回答 2

1

如果elm$('photos').children(),那么elm.find('photo')返回什么?
我猜什么都没有,因为你已经有了照片元素elm,而且根本不需要使用find()

$(entry).find('photos').children().each(function() {
      var div = $('<div />', {'class':'photos'}),
          img = $('<img />', {src: 'img/photos/'+$(this).text(), alt: ''});

      $self.append( div.append(img) );
});
于 2013-07-15T00:35:16.193 回答
1

在每个循环this中指的是照片节点,所以elm.find('photo').text();应该是elm.text();

于 2013-07-15T00:35:31.423 回答