Javascript jquery addClass IE7性能问题
我只在IE7中遇到了一个奇怪的场景, 将类添加到IDJavascript jquery addClass IE7性能问题,javascript,jquery,internet-explorer-7,Javascript,Jquery,Internet Explorer 7,我只在IE7中遇到了一个奇怪的场景, 将类添加到ID $(idName).addClass("sel"); 如果我的idName很短,则我不会面临任何问题,但如果它很长,则浏览器将挂起 挂起时,idName类似于dateRange(200620072000820092010) 编辑: 请向我推荐任何替代品 提前谢谢。我从来没有见过一个身份证 (,) 你能试着用字母数字和连字符、下划线或camelcase分隔吗?我从来没有见过一个带有 (,) 您可以尝试使用字母数字并用连字符、下划线或cam
$(idName).addClass("sel");
如果我的idName
很短,则我不会面临任何问题,但如果它很长,则浏览器将挂起
挂起时,idName
类似于dateRange(200620072000820092010)
编辑:
请向我推荐任何替代品
提前谢谢。我从来没有见过一个身份证
(,)
你能试着用字母数字和连字符、下划线或camelcase分隔吗?我从来没有见过一个带有
(,)
您可以尝试使用字母数字并用连字符、下划线或camelcase分隔吗?这是一个看起来很奇怪的ID,如果它是串联的,则等同于
ID=“dateRange(200620007200820092010)”
,因此无效,因为ID只能由字母数字加“-”和“\u10”组成,并且以字母开头
这是一个看起来很奇怪的ID,如果它是串联的,那么它将等同于
ID=“dateRange(200620007200820092010)”
,因此无效,因为ID只能由字母数字加“-”和“-”组成,并且以字母开头
一个可能的问题是,您使用的字符在ID中是不被严格允许的。虽然它可以在某些浏览器中工作,但你不能指望它——特别是在像IE7这样的旧浏览器中 作为实验,您可以尝试修改这些ID,用下划线和连字符替换括号和逗号 如果使用ID存储数据,更好的选择是使用函数。生成HTML时,将日期范围隐藏如下:
<li data-daterange="2006,2007,2008,2009">Something</li>
var highlightYear = function (year) {
$('#your_ul').find('li').filter( function(){
return $.inArray( year, $(this).data('daterange').split(',') ) > -1;
}).addClass('sel');
};
然后使用:
highlightYear( 2006 );
// adds "sel" class to all LI elements with "2006" in "daterange"
参考文献: 一个可能的问题是您使用的字符在IDs中是不被严格允许的。虽然它可以在某些浏览器中工作,但你不能指望它——特别是在像IE7这样的旧浏览器中 作为实验,您可以尝试修改这些ID,用下划线和连字符替换括号和逗号 如果使用ID存储数据,更好的选择是使用函数。生成HTML时,将日期范围隐藏如下:
<li data-daterange="2006,2007,2008,2009">Something</li>
var highlightYear = function (year) {
$('#your_ul').find('li').filter( function(){
return $.inArray( year, $(this).data('daterange').split(',') ) > -1;
}).addClass('sel');
};
然后使用:
highlightYear( 2006 );
// adds "sel" class to all LI elements with "2006" in "daterange"
参考文献: 是否尝试缓存
$(idName)
的结果?(假设它不是动态创建的元素。)@Inerdia:Nope。动态数据的缓存有一些问题,所以我不缓存它。我不明白您所说的“idName就像dateRange(2006200720820010)”是什么意思。你能提供更多吗information@Rezler:请检查edit.Hmmm,我以前从未使用过带括号和逗号的ID,但我猜这不太好。它们可能会干扰JQuery选择器。看起来您正试图劫持元素Id来存储数据。这是错误的。也许您可以发布一个关于您试图实现的目标的高级概述?您是否尝试缓存$(idName)
的结果?(假设它不是动态创建的元素。)@Inerdia:Nope。动态数据的缓存有一些问题,所以我不缓存它。我不明白您所说的“idName就像dateRange(2006200720820010)”是什么意思。你能提供更多吗information@Rezler:请检查edit.Hmmm,我以前从未使用过带括号和逗号的ID,但我猜这不太好。它们可能会干扰JQuery选择器。看起来您正试图劫持元素Id来存储数据。这是错误的。也许你可以发布一个关于你想要达到的目标的高层次的概述?