2

Есть ли способ программно проверить правильность селектора javascript/jquery?Проверка селектора css

как .class хорошо, но .class, не

программно в JavaScript или любой другой язык бэкенд (помимо прохождения исходного кода JQuery)

так в псевдокоде

def selectorErrors(selector) 

    // do nasty stuff to the selector 
    if valid? 
     return nil 
    else 
     return errors 
    end 
end 
+2

@Juhana Нет, это не –

+0

@Juhana Это выглядит так: http://jsfiddle.net/w3gqd78e/ –

+0

точно моя точка. Есть ли способ программно решить этот аргумент? –

ответ

-4

$('.a.b')

Если вы хотите пересечение, просто напишите селектора вместе без пробелов i n между ними. Таким образом, для элемента, который имеет идентификатор с классами Ь и с, можно было бы написать:

$('#a.b.c')

+0

это не проверяет правильность, так как в данном селекторе скажите, если это хорошо или нет. –

2

Это должно подтвердить 99% того, что вы можете бросить на JQuery с гораздо меньше накладных расходов

function validateQuery(str) { 
    try { 
     document.querySelector(str); 
     return true; 
    } 
    catch(e) { 
     // something here to check WHY it's invalid 
    } 
    return false; 
} 

редактировать: хорошо, это не скажет вам, что случилось с ним, но он (быстро) проверить действительность - по крайней мере, вам нужно только, чтобы проверить, почему это инвалид, не IF: р

+0

Вместо 'document.querySelector (str);' не должно быть просто: 'jQuery (str);'? Поскольку ya, jQuery имеет несколько псевдоселекторов (': has(),': eq() 'и т. Д.), Не поддерживается методом document.querySelector() ' –

+0

да, я шел для скорости: p –

+0

In факт, вопрос не ясен: 'Проверка javascript/css selector' &' javascript/jquery selector' –

0
existOrValid('#a') 

function existOrValid(a){ 

    if (/^[#,.]{0,1}[A-Za-z][0-9A-Za-z\-\._:]*$/.test(a)) { 
    alert('valid'); 
} 

} 

Работает на простых классах, выбирает идентификаторы, но нуждается в модификации для вложенных запросов