我只在IE7中遇到一个奇怪的场景,比如 在ID中添加一个类。
$(idName).addClass("sel");
如果我的idName
很短,那么我不会遇到任何问题,但如果它很长,那么浏览器就会挂起。
在挂起时,idName
就像dateRange(2006,2007,2008,2009,2010)
的编辑: 的
populatedID = "dateRange(2006,2007,2008,2009,2010)";
var idName = "li[id=\"" + populatedID + "\"]";
$(idName).addClass("sel");
请建议我使用它的任何替代方法。
提前致谢。
答案 0 :(得分:2)
这是一个外观很奇怪的ID,如果它是内联的,则等同于id="dateRange(2006,2007,2008,2009,2010)"
,因此无效,因为ID只能由字母数字加“ - ”和“_”组成,并以alpha开头
答案 1 :(得分:2)
一个可能的问题是您使用的ID不是严格允许的字符。虽然它可能在某些浏览器中有效,但你不能指望它 - 特别是在IE7这样的浏览器中。
作为一项实验,也许你可以尝试修改这些ID,用下划线和连字符替换括号和逗号。
如果您使用ID存储数据,则更好的选择是使用data()
功能。生成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"
答案 2 :(得分:1)
我从未见过带
的身份证明(,)
您可以尝试使用字母数字,并用连字符或下划线或camelcase分开吗?