Я пытаюсь использовать селектор jquery
"body *:not(.class)"
для привязки событий ко всему на странице, кроме данного класса (см. http://jsfiddle.net/MMrRb/)
Когда я это делаю, предложение: not игнорируется. Кто-нибудь знает, почему это? Мой единственный способ взломать это - отдельная статья jquery, чтобы отменить то, что применяется "*",
Это связано с тем, что стиль применяется и к элементу ul
, и two
являются дочерними элементами ul
поэтому правило css наследуется элементом
Мое решение будет заключаться в том, чтобы применить правило только к узлам листа, попробуйте решение ниже
$(function() {
$("body :not(.two):not(:has(*))").css("color", "red");
});
Демо: скрипка
Примечание. Это будет невероятно дорогостоящим... поэтому, если вы получите какое-либо другое решение, выберите его после анализа затрат
Он работает отлично. Если вы проверите DOM в своей скрипке, вы увидите, что ваш .two
элемент не имеет стиля color: red
. Однако ваша ul
. Так как ваш .two
находится в вашей ul
он наследует цвет.
При этом *
в вашем селекторе не используется. Вы можете удалить его, и он по-прежнему будет выбирать одни и те же элементы.