Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery addClass IE7性能问题_Javascript_Jquery_Internet Explorer 7 - Fatal编程技术网

Javascript jquery addClass IE7性能问题

Javascript jquery addClass IE7性能问题,javascript,jquery,internet-explorer-7,Javascript,Jquery,Internet Explorer 7,我只在IE7中遇到了一个奇怪的场景, 将类添加到ID $(idName).addClass("sel"); 如果我的idName很短,则我不会面临任何问题,但如果它很长,则浏览器将挂起 挂起时,idName类似于dateRange(200620072000820092010) 编辑: 请向我推荐任何替代品 提前谢谢。我从来没有见过一个身份证 (,) 你能试着用字母数字和连字符、下划线或camelcase分隔吗?我从来没有见过一个带有 (,) 您可以尝试使用字母数字并用连字符、下划线或cam

我只在IE7中遇到了一个奇怪的场景, 将类添加到ID

$(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来存储数据。这是错误的。也许你可以发布一个关于你想要达到的目标的高层次的概述?