Как указать стиль, который не должен быть переопределен стилями, указанными в JS - PullRequest
0 голосов
/ 17 марта 2010

У меня есть некоторые элементы, стиль которых динамически изменяется с помощью JS. Тем не менее, я надеюсь, что один из которых не будет изменен.

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

Ответы [ 5 ]

4 голосов
/ 17 марта 2010

это не может быть сделано.JavaScript выполняется после загрузки и применения CSS.вам придется изменить свои идентификаторы и классы и / или код JavaScript, чтобы он не нацеливался на элементы, которые вы не хотите изменять.

2 голосов
/ 17 марта 2010

Как вы уже видели, вы не можете сделать это в CSS; тем не менее, вы можете указать вашему JavaScript не обновлять стиль элемента, но это требует некоторого ручного внимания Учтите следующее:

HTML

<ul id="some-list">
    <li>A</li>
    <li>B</li>
    <li class="no-style-update">C</li>
    <li>D</li>
</ul>

JavaScript (ваниль)

var nodes = document.getElementById("some-list").getElementsByTagName("LI");

for ( var i=0, l=nodes.length; i<l; ++i ) {
    // If style updates are allowed
    if ( !nodes[i].className.match(/\bno-style-update\b/i) ) {
        // Update the element's style
    }
}
2 голосов
/ 17 марта 2010

Короткий ответ: ты не можешь. CSS применяется так, как он встречается браузером. Поскольку вызов JavaScript является последним вызовом, который изменяет этот конкретный стиль, он будет применен к элементу.

Что вы можете сделать, это запустить другой JavaScript, который меняет стиль этого конкретного элемента после первого скрипта. Поскольку в этом элементе есть что-то уникальное, вы можете ссылаться на него по его идентификатору, классу или имени.

2 голосов
/ 17 марта 2010

Вы не можете.

Лучшее, что вы можете сделать, это переопределить методы javascript, которые делают изменение.

0 голосов
/ 17 марта 2010

Возможно, вы могли бы поместить элементы в iframe, где атрибут src относится к другому пути или домену. Затем javascript на странице контейнера не смог изменить элемент из-за того же правила происхождения, которое не позволяет изменять данные из разных источников.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...