我已经将一条狗的名字从 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/