Оптимизация JQuery для IE - PullRequest
       5

Оптимизация JQuery для IE

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

У меня есть функция:

function doBlamingItem($cell, showEditMark) {
    $cell.hover(function () {
        $cell.toggleClass('clickable-cell', showEditMark).toggleClass('editing-cell', !showEditMark);
    }, function() {
        $cell.removeClass('clickable-cell editing-cell');
} );};

в $ (document) .ready () Я применяю эту функцию для некоторых ячеек в моей таблице (~ 500), и когда я наведу на нее мышь - в FF или Chrome все в порядке, но IE7-9 начинает отставать и Я не знаю, как это исправить: (

и код из $ (document) .ready ():

var i = firstRowOnPage();
while (table.GetRow(i) != null) {
    if (condition) {
        var row = table.GetRow(i);
        var elementInCellId = column.fieldName + '_' + rowKey;
        var $cell = $(row.cells[realIndex]).attr('id',elementInCellId);
        doBlamingItem($cell, true);
        setClickable(editInfo, $cell);
    }
i++;
}

Я использую doBlamingItem для каждой ячейки, потому что для некоторых из них showEditMark = true, для других showEditMark = false

Ответы [ 2 ]

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

Ваш код в основном (1) находит эти ~ 500 элементов, (2) выполняет их итерацию для (3) назначения событий наведения (состоящих из mouseenter и mouseleave). Вы слышали о делегированных событиях ?

Время установки практически отсутствует (зарегистрировано только 2 обработчика событий вместо 1000). Ни один элемент не выбран и не пройден.

(function($, undefined){
  // if you want it global
  var showEditMark = true;
  // otherwise save that state to some element's data()

  $(function(){
    $(document.body).delegate('.your-table-selector td', {
      mousenter: function(e){
        $(this)
          .toggleClass('clickable-cell', showEditMark)
          .toggleClass('editing-cell', !showEditMark);
      },
      mouseleave: function(e){
        $(this).removeClass('clickable-cell editing-cell');
      }
    });
  });
})(jQuery);
0 голосов
/ 02 ноября 2011

Спасибо всем, кто ответил на мой вопрос, но, как я понял, проблема не в javascript ... У моей страницы большое DOM-дерево элементов и много CSS-стилей, поэтому у IE есть проблемы с его рендерингом

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