从所有元素中删除类,但是1

时间:2013-10-24 16:10:46

标签: javascript jquery css

所以我觉得我的代码应该可以工作,但事实并非如此。目的是从除了特定元素之外的每个元素中删除可编辑的类。

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

我也尝试过做

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

我确信我在某个地方犯了一些愚蠢的错误,但请帮助我。

编辑:抱歉没有指定人。 gCms.section是一个包含“#someID”

行的字符串

4 个答案:

答案 0 :(得分: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" );

通过执行“单行”命令,你在“优雅”中放松了什么,你获得了可读性。

答案 1 :(得分:0)

我认为你的意思是$('*:not(#gCms.section)').removeClass("cmsEdit")

您的gCms.section需要一个标识符,例如idclass(pound == id,period == class)。

答案 2 :(得分:0)

你确定你没有意外地将它们扭曲,你真的是这个吗?

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

答案 3 :(得分:0)

你可以这样做,我想:

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

它取代所有元素的cmsEdit,但不取代Id gCms =&gt;课程部分。