将类应用于元素-JQuery

将类应用于元素-JQuery,jquery,Jquery,我正在一个有大量表格的网页上工作。JQuery脚本处理每一行,并决定需要对其应用何种CSS样式。我使用此代码段将类应用于表单元格 $myElem.parents('td').eq(0).attr('class', 'requiredClass'); 在功能上,它的工作原理与预期一致。然而,在IE7.0中,运行这个需要16毫秒。考虑到页面上的行数,这会很快累积到至少半秒 如何使该方法运行得更快?尝试使用addClass方法 $("#ID").addClass("newclass"); 如果要删

我正在一个有大量表格的网页上工作。JQuery脚本处理每一行,并决定需要对其应用何种CSS样式。我使用此代码段将类应用于表单元格

$myElem.parents('td').eq(0).attr('class', 'requiredClass');
在功能上,它的工作原理与预期一致。然而,在IE7.0中,运行这个需要16毫秒。考虑到页面上的行数,这会很快累积到至少半秒


如何使该方法运行得更快?

尝试使用addClass方法

$("#ID").addClass("newclass");
如果要删除removeClass,请使用removeClass

问题可能是在IE中,类作为属性的处理速度可能不快(这是我的猜测,因为我不使用IE)。

试试看

$myElem.parents('td').eq(0).addClass('requiredClass');
使用时,它将指定的类添加到每个匹配元素集中

$Elem.parent('td').addClass('requiredClass');

我认为您的问题在于调用
eq
函数。似乎您只需要第一个
td
,因此下面是一个更合适的选择器。我还使用addClass函数来设置类名,而不是使用
attr

$myElem.parent('td:first').removeClass().addClass('requiredClass');

根据你在问题中的评论,这应该是最有效的

$Elem.parent('td').addClass('requiredClass');
这使用而不是,前者只查看直接父节点,后者查看根节点之前但不包括根节点的所有父节点

parent()
中很可能也是多余的,因为它可以过滤掉那些不是
元素的父节点。由于您一次处理每一行,我想您可以保证每种情况下的父级都是
,因此我也会删除该过滤器。所以它变成了

$Elem.parent().addClass('requiredClass');
如果您不必一次处理每一行,而是可以确定需要将某个类应用于所讨论的
的行集,然后向“添加类”命令发出一个选择器,则速度可能会更快。这可能是不可能的,这取决于正在执行的检查,但这只是一个想法

编辑:

您说您需要在添加新类之前删除未知类,但不知道每种情况下的类名。在没有类名字符串参数的情况下调用removeClass()将删除所有类。如果您不知道,元素可以定义多个类,每个类由一个空格分隔,例如,
。jQuery的addClass()命令将确保添加的每个新类名与任何其他类名之间用空格分隔。因此,选择器现在可能看起来像

$Elem.parent().removeClass().addClass('requiredClass');

选择器应该是“为$myElem获取顶级父级”吗?您使用的是嵌套表吗?表结构是这样的:myElem引用了复选框,样式应该应用于它的see my answer,以获得执行此语句的最有效方法-在执行此语句之前,元素已经有一个未知的css类。所以,理论上,我应该先做removeClass,然后再做addClass。但是,当我使用$myElem.parents('td:first').attr('class','requiredclass')时,我不知道要执行removeClassAnd的类的名称;我看不到性能上的改进。严格来说,取消头等舱并不是必要的。在一个元素上可以定义多个类
asdf
将被设置为
external_link
highlight
。我已经做了相应的更改。我还从父元素改为父元素,这是我的初衷。在执行此语句之前,元素已经有一个未知的css类。所以,理论上,我应该先做removeClass,然后再做addClass。但是,我不知道执行removeClass的类的名称这更干净,但速度会更慢。@未知-在没有classname参数的情况下调用removeClass()将删除所有类:)在执行此语句之前,元素已经有一个未知的css类。所以,理论上,我应该先做removeClass,然后再做addClass。但是,我不知道执行RemoveClass的类的名称。严格来说,删除第一个类并不是必需的。在一个元素上可以定义多个类
asdf
将被设置为
外部链接
突出显示