jquery - 传递的名称变量不会加载新的 xml 内容

标签 jquery html css xml variables

我已经将一条狗的名字从 Pg1 传递给了 Pg2。我在下面的代码中添加了注释,以逐步解释正在发生的事情。我的代码一直运行到最后一个函数,该函数应该在 girls.xml 中搜索狗的名字并将相关节点加载到 Pg2 上的配置文件中。

如果您提出任何改进我的代码的建议,我将不胜感激。善待我,我是自学的:-)

这就是 litters.xml 文件的格式

  <?xml version="1.0" encoding="utf-8"?>
 <litter>
    <litter_id>201704</litter_id>
    <dogs_mom>June Bug</dogs_mom>
    <dogs_dad>Oscar</dogs_dad>
  </litter>

这就是 girls.xml 文件的格式

       <?xml version="1.0" encoding="utf-8"?>
<breeder>
  <girls>
    <dog>
        <dogs_breeding_name>Adora</dogs_breeding_name>
        <profile>
            <![CDATA[<strong>Adora</strong> is a second generation puppy. Adora lives in a guardian home. ]]>
        </profile>          
       </dog>
    </girls>
</breeder>

pg1.html 上,狗妈妈的名字已被点击 (litters.xml) 并传递给 pg2.html

$(".thumb-but-link").click(function (e) {
 e.preventDefault();
var i = $(e.currentTarget).text();
window.location.href = '../xml/pg2.html' + '#' + i;
});

pg2.html 文件加载girls.xml 文件

$.ajax({
  type: "GET",
  url: "../xml/girls.xml",
  dataType: "xml",
  success: findDog
   });

findDog函数加载girls节点

       function findDog(xml){
         $(xml).find('girls').each(function () {
         girlsXml = $(this);

然后它使用 if 语句检查是否从 pg1.html 传递了一个新的狗名,如果没有传递名字,它加载 中的默认值(第一只狗) >girls.xml 文件放到页面上的狗狗简介中。

        if(window.location.hash.substring(1)) {
                    var i = location.hash.match(/^#?(.*)$/)[1];
                    var x = girlsXml.find('dog:contains("i")');
                    loadClickedContent(x)
                 }else{
                    var x = girlsXml.find('dog').first();
                    loadClickedContent(x)
            }
          }); 
       }


    function loadClickedContent(x) {
        girlsXml.find(x).each(function () {
            var x = $(this);
            var dogsBreedingName = x.   find('dogs_breeding_name').text();
            var profileName = x.find('profile').text();

            $("#breedingNameHolder").empty();
            $("#profileHolder").empty();

            $("#breedingNameHolder").append(dogsBreedingName);
            $("#profileHolder").append(profileName);
        }); 
    }   
 </script>

所以...

Pg1.html thumb-but-link"正确地将狗的名字从 litters.xml 传递到 Pg2.html

Pg2.html girls.xml 加载正确

Pg2.xml 能够将 girls.xml 中的默认狗加载到配置文件中

Pg2.html if 语句能够从 Pg1.html 中读取狗的名字

Pg2.html else 语句能够从 girls.xml 中读取默认的狗。然后调用 loadClickedContent 函数并将默认狗加载到配置文件中。

我想我的问题可能是当我从 if 语句调用 loadClickedContent 函数时,它没有加载新内容。有没有可能格式不对?我试过将 .html() 和 .text() 放在末尾,但它们没有用。

最佳答案

当你在寻找狗的名字时,你实际上并没有把它放在搜索中,你只是把字母i,试试下面的代码,其中变量i 连接到字符串中以查找所需的狗。

var x = girlsXml.find('dog:contains("'+i+'")');

关于jquery - 传递的名称变量不会加载新的 xml 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44579987/

相关文章:

html - Chrome 中的 Flexbox——如何限制嵌套元素的大小?

php - 使用 Jquery 只保留 html 中的某些元素

javascript - 在 Django 管理日期小部件上发生 jQuery 事件后,AngularJS 不会更新 ng-model

javascript - 如何在 angularjs 中创建水印指令?

html - 缩放和分辨率

javascript - 水平修复一些 HTML

javascript - 删除另一个元素时停止 float div 捕捉

javascript - jQuery Ajax POST 并返回数据

javascript - 如何构建一个 "slides in"的 CSS 动画,在完成滑动后显示一个文本/div?

javascript - 如何一直显示最后一个子div?