2014-04-17 5 views
0

Я пытаюсь использовать Zepto в jQuery для плагина vex.js.Неправильная ошибка выбора при портировании из jQuery в 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); 
} 
+1

quote несоответствие? – adeneo

+0

@adeneo: Я думаю, что это проблема с сообщением об ошибке, а не с кодом. – BoltClock

ответ

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.

+0

Да, это исправляло проблему. Благодарю. – redV