2013-10-24 2 views
0

Так что я чувствую, что код, который я должен работать, но это не так. цель состоит в том, чтобы удалить класс, редактируемый из каждого элемента, кроме определенного.удалить класс из всех элементов, но 1

$('*').not(gCms.section).removeClass("cmsEdit") 

Я также попытался сделать

$('*').each().not(gCms.section).removeClass("cmsEdit") 

Я уверен, что я делаю какой-то тупой ошибку где-то, но, пожалуйста, помогите мне, ребята.

Редактировать: Извините, что не указали ребят. gCms.section является строкой, содержащей что-то вдоль линий «#someID»

+2

Почему вы смотрите на каждый элемент? Вы должны иметь '$ (". CmsEdit "). Not (...' – epascarello

+1

gCms.section - это объект? Или вы хотели означать «# gCms.section»? –

ответ

2

Вы всегда должны стараться избегать селектора $("*"). Он соответствует каждому элементу на вашей странице. Это включает <body> и <head> и ... ну ... все! ИМО действительно переполняет, и я не слишком уверен, почему он существует! Я никогда не видел случая, когда вы не можете этого избежать.

Вместо того, чтобы пытаться охватить эти действия в одну команду, вы всегда можете выполнить эту задачу с некоторым кодом, аналогичным образом:

// For any element containing the class cmsEdit, remove it. 
$(".cmsEdit").removeClass("cmsEdit"); 
// (Re)add the class to the element you want 
$(other_element).addClass("cmsEdit"); 

Что вы теряете в «элегантности», выполняя «один вкладыш» команды, вы получите читаемость.

+0

Так что мне не нужен вызов .each? Есть несколько элементов, которые имеют класс cmsEdit, но к тому времени, когда все закончится, я должен там быть только одним. – Jinjubei

+0

Нет - вам не нужна команда 'each'. $ (".cmsEdit") 'selector будет соответствовать всем элементам, содержащим этот класс, поэтому' removeClass() 'будет работать на всех согласованных элементах; Short and sweet :) – Lix

0

Я думаю, что вы имеете в виду $('*:not(#gCms.section)').removeClass("cmsEdit")

и ваш gCms.section нужен идентификатор, такой как id или class (фунт == ид, период == класс).

0

Вы уверены, что не случайно их перевернули, и что вы на самом деле это имели в виду?

$("*").not("section.gCms").removeClass("cmsEdit"); 
+0

полностью уверены, что gCms - это глобальное пространство имен для javascript – Jinjubei

0

вы можете сделать это, как это я думаю:

var element = $("#gCms.section"); 
$('*').each().not(element).removeClass("cmsEdit"); 

Он заменяет cmsEdit от всех элементов, но не от Id ГМЦ => класс раздел.

Смежные вопросы