javascript - 为 IE 优化 jQuery

标签 javascript jquery internet-explorer jquery-selectors

我有函数:

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

最佳答案

您的代码基本上是 (1) 找到那 ~500 个元素,(2) 迭代它们以 (3) 分配悬停事件(由 mouseenter 和 mouseleave 组成)。你听说过delegated events吗? ?

几乎没有设置时间(只注册了 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);

关于javascript - 为 IE 优化 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7951521/

相关文章:

javascript - 使用 Javascript 或 JQuery 插入响应式 CSS 规则

javascript - 如何使用 JavaScript 从 HTML 页面的嵌入/对象中获取元素?

javascript - 发布到查找字段

javascript - 原型(prototype)中的 JQuery 等价物

css - 如何在 IE 上显示 CSS3 列?

javascript - 登录按钮在 IE7、8、9 上不起作用

javascript - JS 如何搜索字符串并仅获取其中的特定部分?

javascript - 如何使 carouFredSel 自动播放和同步?

javascript - 使用 Ajax 回发后 JQuery Datepicker 错误

asp.net - 上载文件并感到头痛-htmlfile:拒绝访问