jquery(“foo bar”)vs jquery(“foo”)。find(“bar”)

时间:2009-05-21 18:37:24

标签: jquery

我正在尝试遍历xml文档。这不起作用(零结果):

jquery("foo bar")

这确实有效:

jquery("foo").find("bar")

任何想法为什么?

3 个答案:

答案 0 :(得分:2)

jquery("foo bar")

第一个查找bar元素是foo元素的后代

所以它可以在这个例子中使用

 <foo>
  <div>Form is surrounded by the green outline</div>
  <label>Child:</label>
  <bar name="thisone" />
  <fieldset>
    <label>Grandchild:</label>
    <bar name="thisone2" />
  </fieldset>
 </foo>

这个使用jquery expression

进行搜索
jquery("foo").find("bar")

从所有foo元素开始并搜索后代bar元素

所以它可以在这个例子中使用

<foo><bar>found</bar>, not here?</foo>
<foo>not here <bar>found</bar>.</foo>

所以没有你的标记就无法真正指明你的问题

答案 1 :(得分:0)

我很好奇你是如何得到冲突的结果,所以我尝试使用标记,但却想不出一种方法来重现jQuery对象本身返回的描述行为。我确实发现了一些产生这种行为的情况略有不同,例如:

<div>
    <span id="span1">Hello World</span>
    <img src="foo" alt="bar" />
</div>

如果你尝试这种语法(这里我拼写出“jQuery”而不是“$”)

jQuery("#span1").parents("div img").css("max-width","25%");  // no good

然后你将得不到任何结果,因为“span1”没有“div img”父级,只有“div”父级。但这会产生一个结果:

jQuery("#span1").parents("div").find("img").css("max-width","25%");  // will work

因为它找到了“span1”的父div,并从那里找到了该父div的后代的图像。

但我的例子是一个人为的例子,因为在那种情况下你可能只会使用

jQuery("#span1").siblings("img").css("max-width","25%");  // will also work, and is clearer

答案 2 :(得分:0)

需要注意的重要一点是,您正在遍历XML。虽然您的示例对HTML有效且相同,但我发现,至少在IE上,后代表达式不适用于XML。

事实上,如果有人能证实并解释这一点,我将不胜感激。