基于子元素的值迭代父元素

时间:2011-06-09 21:44:03

标签: jquery xml jquery-selectors

这似乎是一件非常简单的事情,但我还没弄明白该怎么做。给定XML片段:

<programs>
  <program>
    <title>Program 1</title>
    <time>2011-01-05 12:00:00</time>
    <code>a</code>
  </program>
  <program>
    <title>Program 2</title>
    <time>2011-01-05 12:30:00</time>
    <code>b</code>
  </program>
  <program>
    <title>Program 1</title>
    <time>2011-01-06 12:00:00</time>
    <code>a</code>
  </program>
</programs>

如何迭代 ,其中 以“2011-01-05”开头,而代码等于 a ?我知道如何为一个元素执行此操作,并且我看似编写的代码将执行任何一个/或但是我无法使用 AND 逻辑的正确语法。

如果变量 data 包含我的XML,那么我可以使用$(data).find("code:contentIs('a'),time:contains('2011-01-05')").parent()同时获取 Program 1 Program 2 但是我只想获得 Program 1

(contentIs是我写的一个我知道有效的功能所以不要注意那个)

我尝试$(data).find("code:contentIs('a'):time:contains('2011-01-05')").parent()但是我得到语法错误,无法识别的表达式:时间

我觉得我必须在这里遗漏一些基本语法,但我无法弄清楚它是什么。

1 个答案:

答案 0 :(得分:1)

我在这里使用:has。它找到具有与选择器匹配的后代元素的元素。

$(data).find('program:has(code:contentIs("a")):has(time:contains("2011-01-05"))');

使用has选择器两次说“确保元素符合两个要求”。这与通过两个类选择相同,例如a.someClass.someOtherClass