gpt4 book ai didi

jquery - :select in . find() 的奇怪行为

转载 作者:行者123 更新时间:2023-12-01 01:31:41 24 4
gpt4 key购买 nike

我正在将当前使用 jQuery 1.3.2 的网站更新到至少 1.10.2。当我这样做时,网站会因为这样的命令而卡住:

this.form.find(':select[name="fieldtype"]');

这不应该起作用 - 它应该是: this.form.find('select[name="fieldtype"]'); - 没有冒号 - 但它实际上有效。

我没有发现任何表明 ':select...' 有效的信息。 jQ 1.3.2 中是否有可能简单地忽略了冒号?

最佳答案

编辑:

我完全忘记了自定义伪选择器。如果出于遗留目的,您需要更新版本的 jQuery 来像 select 一样对待 :select,您可以这样做:

jQuery.extend(jQuery.expr[':'], {
select: function (el) {
return jQuery(el).is('select');
}
});

现在 jQuery(':select')jQuery('select') 是等效的表达式。

说明

sizzle 似乎有一个错误jquery 使用的 css 选择器引擎,以便 jquery 可以在 document.querySelectorAll 成为事物(或广泛可用的事物)之前选择 dom 元素。 jQuery 1.3.2 使用 sizzle 0.9.3(版本 1 之前的版本!),jQuery 的下一个版本 1.4.0 使用 sizzle 1.0.0,其中不存在该错误。

该错误似乎具体在于以“:”为前缀的正确标签将被解释为标签而不是无效的伪标签

您可以验证 sizzle 是罪魁祸首:

  • 下载 jquery 1.3.2 和 jquery 1.4
  • 复制 sizzle 1.0.0 block 出 1.4 并替换 1.3.2 中的 sizzle 0.9.3 block

您的“hybrid 1.3.2”版本现在也将拒绝选择器。

关于jquery - :select in . find() 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43261427/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com