jQuery 是我赖以生存和呼吸的东西。就在最近(从 >= 1.10.1 开始)jQuery 对选择器有“打嗝”。例如,选择$("#catalog")
只会返回一个元素,而选择会$("div#catalog")
返回两个。另外,最近我遇到了一些问题,比如选择器$("#page_id > div.my_class .all_children")
什么也没返回,但$("#page_id").find("div.my_class").find(".all_children")
返回了我想要的(目前没有工作示例)。
我在 jsFiddle 上确实有一个可重现的示例,它在 Firefox 和 Chrome 上具有相同的“问题”(我没有测试任何其他浏览器)。我想在将其作为错误发布到 jQuery.com 之前,我会先在此处发布以获取输入。
难道我做错了什么?我是否误解了 Sizzle 和选择器?我知道“div#id”通常比“#id”快(正确吗?),但它们不应该都工作吗?
$(document).ready(function () {
alert("Selector (#catalog): " + $("#catalog").length + " / " + $("#catalog").find(".field_grid").length);
console.debug("Without div: ", $("#catalog"), $("#catalog").find(".field_grid"));
alert("Selector (div#catalog): " + $("div#catalog").length + " / " + $("div#catalog").find(".field_grid").length);
console.debug("With div: ", $("div#catalog"), $("div#catalog").find(".field_grid"));
});
上面的代码将返回不同的结果,即使选择器几乎相同。
看看小提琴:http: //jsfiddle.net/AVWgW/2/。另外,看看控制台,我正在从 jQuery 中转储返回对象。
想法?