JQuery AddClass IE7 Производительность Проблема - PullRequest
1 голос
/ 17 октября 2011

Я сталкиваюсь со странным сценарием только в IE7, например, добавление класса к идентификатору.

$(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");

Пожалуйста, предложите мне любую альтернативу для работы с ним.

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 17 октября 2011

это странно выглядящий идентификатор, который равняется id="dateRange(2006,2007,2008,2009,2010)", если он встроенный и, следовательно, недопустимый, поскольку идентификатор может состоять только из буквенно-цифровых цифр, плюс "-" и "_" и начинаться с буквы

http://www.w3.org/TR/html401/types.html#type-name

2 голосов
/ 17 октября 2011

Одной из возможных проблем является то, что вы используете символы, которые строго не разрешены в идентификаторах. Хотя он может работать в некоторых браузерах, вы не можете рассчитывать на него, особенно в браузере, который так же стар, как IE7.

В качестве эксперимента, возможно, вы можете попытаться изменить эти идентификаторы, заменив скобки и запятые на подчеркивания и дефисы.

Если вы используете идентификатор для хранения данных, гораздо лучше использовать функцию 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"

Ссылки: W3C HTML Спецификация на имя и идентификационные токены .

1 голос
/ 17 октября 2011

Я никогда не видел идентификатор с

(,)

Можете ли вы попробовать использовать буквенно-цифровые символы и отделить их дефисами, подчеркиванием или верблюдом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...