我试图在jQuery的vex.js插件中使用Zepto。
".vex:not(".vex-closing") .vex-content"
我在执行上面的选择器时遇到错误。
error performing selector: ".vex:not(".vex-closing") .vex-content" zepto.min.js:3
Uncaught SyntaxError: Failed to execute 'querySelectorAll' on 'Document': '.vex:not(".vex-closing") .vex-content' is not a valid selector.
如何解决此问题。
以下是从vex.js
中提取的代码 getAllVexes: function() {
return $("." + vex.baseClassNames.vex + ":not(\"." + vex.baseClassNames.closing + "\") ." + vex.baseClassNames.content);
}
答案 0 :(得分:2)
:not()
选择器通常不允许引用,因为它接受选择器而不是字符串。无论出于何种原因,quotes are allowed in jQuery/Sizzle's implementation of :not()
。
您应该从选择器字符串中删除\"
标记,以使其在document.querySelectorAll()
中工作(Zepto似乎直接调用,并专门用于选择器匹配 - 如果我错了,请纠正我) :
return $("." + vex.baseClassNames.vex + ":not(." + vex.baseClassNames.closing + ") ." + vex.baseClassNames.content);
这将产生一个像.vex:not(.vex-closing) .vex-content
这样的选择器,它是一个有效的CSS选择器。