我正在尝试遍历xml文档。这不起作用(零结果):
jquery("foo bar")
这确实有效:
jquery("foo").find("bar")
任何想法为什么?
答案 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("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。
事实上,如果有人能证实并解释这一点,我将不胜感激。