1

我有一个页面应该根据访问者的位置显示公司/公司。我使用了一个插件来确定访问者的位置。公司列表存储在具有以下设置的 XML 文件中:

<?xml version="1.0" encoding="utf-8"?>
<Events>
  <EventItem>
    <Country>Abu Dhabi</Country>
    <Company>Trizac Abu Dhabi</Company>
    <Address>P.O. Box 4434 Abu Dhabi U.A.E.</Address>
    <Email Link="ahmad.nabulsi@trizac.ae"><![CDATA[ahmad.nabulsi@trizac.ae]]></Email>
    <Web Link=""><![CDATA[]]></Web>
    <Phone Link="tel:971 2 633 0552"><![CDATA[Phone:971 2 633 0552]]></Phone>
    <Fax Link="tel:971 2 633 0557"><![CDATA[Fax:971 2 633 0557]]></Fax>
  </EventItem>
</Events>

我使用以下代码显示数据(我先将它们放在警报中)

$.get(strXML, function(d){
                alert("Start search in : " + strXML + " for " + location.countryName); 
                $(d).find("Country:contains('Hong Kong')").each(function(){
                    var $lbp = $(this);
                    alert ($lbp.find("Company").text() + " hello " + $lbp.find("Address").text())
                }); //end of $(d).find
            }); //end of $.get

我首先对 location.countryName 进行了硬编码(在本例中为“Hong Kong”,因为我的定位器将国家/地区名称全部大写,而 XML 中的数据使用驼峰大写(我仍在尝试找出如何更改它)。在我的 XML 中,HK 有一家公司,代码可以看到。但是当我尝试显示 and 标记中的文本时,它什么也没显示。

这就是为什么我在那里放置一个“你好”只是为了看看警报代码是否至少工作。是的,但它没有显示公司和地址的任何内容:(

我也试过“日本”,它有四家公司,在这个过程中我收到了四个警报,但我似乎无法显示来自 XML 标记的数据:( 非常感谢帮助 :) 我是这个 jQuery 的新手/XML 组合,所以请多多包涵 :(

4

1 回答 1

1

问题是因为你已经做了 afind()来获取<Country />标签,然后你又在里面寻找 Country,它不存在。相反,您需要提升一个级别。尝试这个:

$.get(strXML, function(d){
    alert("Start search in : " + strXML + " for " + location.countryName); 
    $(d).find("Country:contains('Hong Kong')").each(function(){
        var $lbp = $(this).closest('EventItem'); // Note the parent is selected here
        alert ($lbp.find("Company").text() + " hello " + $lbp.find("Address").text())
    });
});
于 2013-09-16T07:58:16.993 回答