问题标签 [sizzle]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jquery - 使用 Sizzle 解析 XML 文件?
我创建了一个库,用于从一组使用 jQuery 的 XML 文件中解析和提取信息。所以做这样的事情很简单:
然后我意识到我的小库不应该依赖于所有的 jQuery,而且我可能只使用 Sizzle 库就可以获得我想要的东西,因为这就是 jQuery 的 .find 方法的来源。但是,我一出门就遇到了麻烦。
Sizzle 似乎没有 parseXML 函数。有没有办法传入一大段 XML 文本并取回可以搜索的对象?
我注意到您可以将上下文传递给 Sizzle 的 find 函数。但是,Sizzle.find(".title", xmlText) 找不到任何东西。
有任何想法吗?是否可以像上面使用 jQuery 一样使用 Sizzle 解析 XML?
注意:我希望能够以无头方式或在 Node 上运行它,所以我不想使用像 DOMParser 这样的浏览器依赖项。
javascript - 带有原型的多个 CSS 选择器
我正在重构一些目前看起来像这样的代码:
我想切换初始选择器并检查 ID 到单行,沿着这些行:
虽然多个选择器不起作用,但每个选择器本身都可以正常工作。不确定这是语法问题还是原型文档所说的应该有效,但是一旦我添加了额外的选择器,就没有任何效果。
要确认这有效:
这有效:
但这无法选择(没有抛出错误)
attributes - 嘶嘶声可以返回没有任何属性的元素吗?
我正在尝试使用嘶嘶声查询从网页中提取没有属性的元素。
我可以通过指定它的属性轻松地返回一个元素。例如: doc.Tables.Filter(Find.BySelector("[ID='abc']")) 返回 ID='abc' 的元素
有没有办法返回所有没有任何属性的元素?这就是我的目标: doc.Tables.Filter(Find.BySelector("[]")) 'return all element with no attributes 感谢 Ken
javascript - jQuery 1.5.1 Sizzle 'cannot read property nodename' child '>' selector with knockoutjs
我正在使用 jQuery 1.5.1 和 Knockoutjs 2.0.0。我的情况有点复杂,但据我了解,这就是正在发生的事情:
我有一些绑定到 Knockoutjs 的元素也有 jQuery.live 绑定。其中一些绑定包含子(父?)选择器“>”。当我删除元素(使用 Knockout)时,我收到此错误:
未捕获的类型错误:无法读取 null 的属性“nodeName”
由 jQuery 中的以下代码引发:
似乎 Knockout 在 jQuery 开始检查实时绑定之前从文档中删除元素,因此当最终检查元素时,它的父元素为空,并引发此错误。
我的问题:
人们会在哪里/如何建议我解决这个问题?我在想这样的事情:
如果父级为空,似乎“>”选择器应该失败,但我可能错了。你们会怎么做?
更新:
JSFiddle 演示了该问题(尝试删除表格行):
仅当我将以下选择器之一用于我的 .live 绑定时,才会发生这种情况。在 :not 选择器中只使用一个类会导致错误消失。
regex - 这是什么意思?使用表达式将匹配什么字符串?
我检查了嘶嘶声代码并查看了定义。
我想知道如何找出这个正则表达式匹配的字符串?
javascript - 使用 Sizzle 选择缓存节点的子元素
有谁熟悉 Sizzle 吗?是否支持选择缓存 DOM 节点的子节点?像 jQuery:
10 倍的帮助,BR
javascript - 我可以强制 jQuery 使用 Sizzle 来评估选择器而不使用非标准选择器吗?
在现代浏览器中,当使用有效的 CSS 选择器时,jQuery 会利用document.querySelectorAll()
来提高性能。document.querySelectorAll()
如果浏览器不支持选择器或方法,它会退回到 Sizzle 。
但是,在调试自定义选择器时,我希望始终使用 Sizzle 而不是本机实现。也就是说,我正在尝试实现jQuery 不支持的 CSS3 选择器:nth-last-child()
之一。由于现代浏览器原生支持此选择器,因此它的工作原理与链接问题中的描述相同。不过,正是这种行为干扰了我的自定义选择器的调试,所以我想避免它。
我可以使用的一个便宜的技巧是放入一个非标准的jQuery 选择器扩展,从而可以说“使”选择器“无效”。例如,假设 every li:nth-last-child(2)
is visible,我可以简单地将其放入,将其转为:
进入这个:
这导致它始终由 Sizzle 评估。除此之外,这要求我对我的页面元素做出一个假设,这可能是真的,也可能不是。我真的不喜欢那样。更不用说,除非绝对必要,否则我一般不喜欢使用非标准选择器。
有没有办法跳过document.querySelectorAll()
支持它的浏览器中的本机方法并强制 jQuery 使用 Sizzle 来评估选择器,最好不使用非标准选择器?很可能,这需要调用另一个方法而不是$()
,但它比选择器黑客 IMO 好得多。
jquery - jQuery 语法错误,无法识别的表达式:[name=Basics.Gender]
我正在从 jQuery 1.4.4 升级到 jQuery 1.7.2,我得到一个语法错误。我认为这是由于'。在选择器的 Basics.Gender 部分中。
有人对如何解决这个问题有任何建议吗?
编辑
任何人都知道为什么“。” 现在打破选择器语法?他们是在 Sizzle 中使用正则表达式还是其他东西?还是将属性放在引号中一直是最佳做法?
jquery - 如何修复 jQuery 1.8 “不支持的伪”错误?
我正在使用的插件依赖于$(':animated')
,但由于我升级到 jQuery 1.8.0,这会引发错误:
未捕获的错误:语法错误,无法识别的表达式:不支持的伪:动画
作为 Sizzle 更改的一部分,jQuery 1.8.0 是否放弃了对这个自定义选择器的支持?我该如何解决?
jquery - 无法识别的表达式: :[type=checkbox] with jQuery 1.8
我将代码更新为 jQuery 1.8 并开始收到此错误:
当然这是说:[type=checkbox]
新版本的jQuery无法识别该表达式,我的问题是:
我输入的方式错误,或者它是一个错误?
我已经在 jsFiddle http://jsfiddle.net/4y8tb/6/上制作了这个版本进行测试,打开控制台查看日志,如果您更改 jQuery 版本,您会看到一个可以工作,一个不能工作。
我尝试了其他一些语法(如:[type="checkbox"]
)但失败了。