jQuery XPath选择符 值得一看的问题
前些天看了看jQuery,在看到XPath选择符的时候,发现了某些书籍和资料上的一处错误。
特此发帖,告之各位网友,以免大家都被误导。
书上原文如下:
我们可以通过下面的选择符表达式,取得包含一个ol元素的所有div元素:
$('div[ol]')
在另外的一篇资料上,也存在相同的说法。
但实际上并非如此。
我目前用的是jQuery1.2.6,通过编码验证,发现 $('div[ol]') 的作用与 $('div[@ol]') 完全相同,意思是:查找所有包含ol属性的div元素。查看官方的示例,有一处用了 $("div[id]") ,是表示选择包含id属性的所有div元素,印证了我的结论。由此可以证明,之前两篇资料上的说法是错误的。
附带说一下:
XPath中,div[ol]表示选择包含一到多个ol元素(直接子元素)的所有div元素。若要在jQuery中实现与之相同的效果,应该这样写:
$('div > ol').parent();
问题算是有了答案,然而却产生了两个问题:
1、jQuery号称支持XPath选择符,但此处与XPath的处理却并不相同。之前已经说了,官方人士是知道这种用法的,可见这并不是BUG。那么,作者为何这样做?为何此处不与XPath选择符的用法完全统一?(许与版本有关?再次说明一下版本:jQuery1.2.6)
2、第三方的一些jQuery书籍或学习资料的编写者(或翻译者)为何会犯同样的错误?难道真的只是相互抄袭吗?(为避诽谤之嫌,我没有确切地说出书名。)
期待高手指教。请针对问题进行解答,无关的话请不要多说。
欢迎顶帖,纯顶帖者、复制答案者无分。