2015-09-23 3 views
3

У меня проблема с моим скриптом JavaScript.jQuery selector, css path replace: eq

Мне нужно экспортировать стиль CSS, который я установил с помощью инструмента, в браузерный файл CSS. функция А JavaScript получает путь к элементу, который меняет и возвращает что-то вроде этого:

html>body>div:eq(2)>div>div:eq(1)>article>div>div>p:eq(1){text-decoration:underline;} 

Путь большого с как селектор JQuery, но не действует в файле CSS работает.

Я попытался заменить элемент :eq на :nth-child, но, несмотря на то, что это действительный файл CSS, стиль не будет применяться.

Что я делаю неправильно? Как я могу преобразовать my: eq в нечто, что css понимает.

+2

, чтобы изменить все вхождения строки: var regExp = new RegExp (": eq", "g"); css = css.replace (regExp, ': nth-child'); – tcharaf

ответ

2

ОК через некоторое время, я нашел ответ, то, что я пытаюсь сделать, не может быть сделано в css.

Редактор eq jQuery не может быть переведен в чистый css.

элемент JQuery является 0, когда на основе п-й ребенок начинает отсчет с 1.

Как я понимаю, если мы получили HTML, как этот

<div> 
    <div id="ele1" class="foo"></div> 
    <div id="ele2" class="foo"></div> 
    <div id="ele3" class="foo"></div> 
</div> 

Селектор .foo: эк (0) return # ele1, а нам нужно .foo: nth-child (1), чтобы получить тот же самый элемент. и если мы преобразуем РОМ к

<div> 
    <div id="ele0"></div> 
    <div id="ele1" class="foo"></div> 
    <div id="ele2" class="foo"></div> 
    ... 
</div> 

Тот же селектор с эк (0) будет возвращать # ele1 в то время как п-й ребенок (1) не будет возвращать ничего, потому что первый ребенок контейнера не соответствует .foo.

На самом деле, если мы попытаемся получить nth-child (2), в первом случае мы получили # ele2, а во втором контейнере вернем # ele1.

Это потому, что nth-child выбирает элемент n из родителя, который соответствует селектору.

2

Вы можете передать второй флаг аргумент в RegExp для глобального поиска:

новый RegExp (шаблон [, флаги])

Использование:

var regExp = new RegExp('(:eq)','g'); 

Working Demo

+0

Спасибо, я попытался написать его в первом аргументе, и он не выполнил задания, но, как второй, он отлично работает. – Leze

+0

@ Leze: рад, что это помогает :) –