如何选择属性为“的XML元素?”;名称“;“有价值的”;“姓氏”;使用JQuery?

如何选择属性为“的XML元素?”;名称“;“有价值的”;“姓氏”;使用JQuery?,jquery,xml,jquery-selectors,Jquery,Xml,Jquery Selectors,我正在尝试使用XML和Javascript(/jquery)创建一个族谱。我要求用户输入他们的名字,然后搜索XML文件。我将名称拆分为变量firstName和lastName,然后使用JQuery选择器进行搜索 正如您在下面看到的,即使在我直接将lastName设置为等于字符串“Lawlor”之后,我也无法通过“family[name=lastName]选择器选择XML元素(如我一直在底部包含的缺少的控制台日志所示) 下面是XML文件的一部分,后面是我用来选择具有“name”属性等于变量“las

我正在尝试使用XML和Javascript(/jquery)创建一个族谱。我要求用户输入他们的名字,然后搜索XML文件。我将名称拆分为变量firstName和lastName,然后使用JQuery选择器进行搜索

正如您在下面看到的,即使在我直接将lastName设置为等于字符串“Lawlor”之后,我也无法通过“family[name=lastName]选择器选择XML元素(如我一直在底部包含的缺少的控制台日志所示)

下面是XML文件的一部分,后面是我用来选择具有“name”属性等于变量“lastName”的族元素的元素的代码

我到底做错了什么

<xml id="familyTree" class="hidden">
<generation0>
    <family name="Lion" surname= "DT" children="4">
        <father>Joe</father>
        <mother>Schmoe Rose</mother>
        <child>Lu</child>
        <child>Bob</child>
        <child>Sam</child>
        <child>Dick</child>
    </family>
    <family name="Lawlor" surname="JR" children="5">
        <father>JK</father>
        <mother>Tulip</mother>
        <child>Holden</child>
        <child>Ewell</child>
        <child>Boo</child>
        <child>Scout</child>
        <child>John</child>
    </family>
           ...

$("input#submitButton").click( function () {
    name  = $("input#txtField")[0].value;
    var firstName = name.split(" ")[0];
    var lastName = "Lawlor";
    console.log("Your last name is '"  + lastName + ",' and your first name is '" + firstName + ".'");

    $.ajax({
        url: 'familyTree.xml',
        type: "GET",
        dataType: "xml",
        success: function(xml) {
            $(xml).find("family[name=lastName] child:contains(firstName)").each(function() {
                console.log("what the FRACK?!");                    
            })
        },
        error: function(XMLHttpRequest, textStatus, errorThrow) {
            alert('Data could not be loaded - ' + textStatus);
        }
    });
})

乔
施莫罗斯
鲁
上下快速移动
山姆
迪克
JK
郁金香
霍尔顿
埃威尔
喝倒采
侦察兵
约翰
...
$(“输入#提交按钮”)。单击(函数(){
名称=$(“输入#txtField”)[0]。值;
var firstName=name.split(“”[0];
var lastName=“Lawlor”;
log(“您的姓氏是“'+lastName+”,'您的名字是“'+firstName+”)”;
$.ajax({
url:'familyTree.xml',
键入:“获取”,
数据类型:“xml”,
成功:函数(xml){
$(xml).find(“family[name=lastName]child:contains(firstName)”).each(function(){
日志(“什么压裂?!”);
})
},
错误:函数(XMLHttpRequest、textStatus、errorThrow){
警报('无法加载数据-'+文本状态);
}
});
})
JQMIGRATE:日志记录处于活动状态 jquery….1.0.js(第20行) 你姓‘劳勒’,名‘约翰’
familyTree.js(第19行)

您需要使用as
lastName
firstName
作为变量来保存要搜索的值

        $(xml).find("family[name=" + lastName + "] child:contains(" + firstName + ")").each(function() {
            console.log("what the FRACK?!");                    
        })

演示:

我的天哪!非常感谢!我注意到在其他代码行中,选择器将设置为[attribute=value],而不是[attribute=“value”],但我不知道我必须执行您上面所做的操作。这种抽象或常见错误(假设是常见的)有什么名称吗我现在明白了。当lastName和firstName在引号内时,它被“读取”为字符串,但在引号外,它是变量。太好了,再次感谢!