0

我正在尝试在 jQuery 中使用 Zepto 来代替 vex.js 插件。

 ".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);
 }
4

1 回答 1

2

选择器中通常不允许使用引号:not(),因为它接受选择器,而不是字符串。但是,无论出于何种原因,在 jQuery/ Sizzle:not().

您应该\"从选择器字符串中删除标记以使其工作document.querySelectorAll()(Zepto 似乎直接调用它,并专门用于选择器匹配 - 如果我错了,请纠正我):

return $("." + vex.baseClassNames.vex + ":not(." + vex.baseClassNames.closing + ") ." + vex.baseClassNames.content);

这将产生一个类似 的选择器.vex:not(.vex-closing) .vex-content,它是一个有效的 CSS 选择器。

于 2014-04-17T15:24:32.193 回答