I'm in the process of updating a site that currently uses jQuery 1.3.2 to at least 1.10.2. When I do, the site chokes on commands like this:
this.form.find(':select[name="fieldtype"]');
This shouldn't work - it should be: this.form.find('select[name="fieldtype"]');
- without the colon - but it in fact works.
I've found nothing that suggests ':select...' is valid. Is it possible that the colon was simply ignored in jQ 1.3.2?
答案 0 :(得分:1)
修改强>:
我完全忘记了自定义伪选择器。如果出于传统目的,您需要更新版本的jQuery来处理:select
select
,您可以这样做:
jQuery.extend(jQuery.expr[':'], {
select: function (el) {
return jQuery(el).is('select');
}
});
现在jQuery(':select')
和jQuery('select')
是等效的表达式。
<强>解释强>
jquery使用的sizzle
css选择器引擎似乎是一个错误,因此jquery可以在document.querySelectorAll
之前选择dom元素(或广泛使用的东西)。 jQuery 1.3.2使用sizzle 0.9.3(pre version 1!),jQuery的下一个版本1.4.0使用sizzle 1.0.0,其中没有bug。
该错误特别似乎是以“:”为前缀的正确标签将被解释为标签而不是无效的伪
你可以证明嘶嘶声是罪魁祸首:
您的“混合1.3.2”版本现在也将拒绝选择器。