【问题标题】:What happened to this selector syntax in jQuery?jQuery 中的选择器语法发生了什么变化?
【发布时间】:2012-01-16 11:17:11
【问题描述】:

我正在修复与 jQuery 1.1.3.1 兼容的 jQuery plugin 并对其进行升级以使其与 jQuery 1.6.2 兼容。

它有两个我认为已弃用的 CSS 选择器表达式。

第一个表达式是:

$("li", _dropDownListJQuery).not("ul").not("span").not("[@dataType='optgroup']").each(

而且似乎不再支持 @datatype

第二个表达式是:

var selectedDropDownListItemJQuery = jQuery("li[@dataValue='" + _originalElementJQuery.val() + "']");

在哪里

_originalElementJQuery.val()

返回一个字符串化的整数(例如“4”)。

看起来@dataValue 似乎不再受支持。

有人知道保留等价物的含义吗?或者这个插件是在github上fork的吗?

【问题讨论】:

  • 我猜[@dataType] 是一个属性,就像现在的[dataType] 一样。
  • 请注意,val 方法不返回整数,而是返回字符串。

标签: javascript jquery xpath jquery-selectors combobox


【解决方案1】:

那是XPath Selector。它们在 jQuery 1.2 中被弃用,在 jQuery 1.3 中被淘汰并移至pluginSee the 1.3 release notes here。今后,jQuery 选择器大多支持 CSS 选择器样式。

$("li[@dataValue='foo']") 将变为 $("li[dataValue='foo']")

那个插件jquery.combobox 显然已经被放弃了,因为没有进一步的开发。

使用 BoltClock 的更正进行编辑。

【讨论】:

  • XPath 属性语法在 jQuery 1.2 中被 不推荐使用 作为您链接到状态的发行说明。它只在 jQuery 1.3 中被淘汰。请参阅jQuery 1.3 的发行说明。
  • 顺便说一下,这是 10k 代表 :)
  • 谢谢@yahelc!您的 cmets 提示我为我的项目分叉此组合框 (github.com/jslayer/jquery-combobox)
【解决方案2】:

只需删除@ 符号。选择器语法现在遵循 css 选择器(我认为 @ 来自 xpath)。

您还可以简化选择器:

$("li:not([dataType='optgroup'])", _dropDownListJQuery)

编辑:确认,[@attrName=attrValue] 是 xpath

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 2011-01-20
    相关资源
    最近更新 更多