В IE 8 выделение нескольких строк таблицы медленнее, чем в Firefox - PullRequest
0 голосов
/ 13 марта 2012

У меня есть две таблицы, расположенные рядом.Когда я выбираю несколько строк в первой таблице, перетаскивая мышь над этими строками, мне нужно выбрать одинаковые строки во второй таблице.В Firefox нет задержек, когда я делаю это, однако в IE8 есть задержка, и если я слишком быстро перетаскиваю мышь, строки между ними не выделяются.Каждая строка в двух таблицах имеет уникальный идентификатор, поэтому я знаю, какую строку мне нужно выделить во второй таблице, когда я выделяю строку в первой таблице.Идентификатор для первых строк таблицы - «f + порядковый номер строки», а для второй таблицы - «d + порядковый номер строки».Идентификатор для первой таблицы «fixedcolumntable», а для второй таблицы «run».Вот мой код:

 $("#fixedcolumntable").delegate("tr", "mousedown", function () {


       var id = ($(this).attr("id")).substring(1);

       $("#run >tbody> tr#d" + id).addClass("selectedrow");

       isMouseDown = true;

       return false; // prevent text selection
   });
  $("#fixedcolumntable").delegate("tr", "mouseover", function () {


        if (isMouseDown) {

            var id = ($(this).attr("id")).substring(1);

            $("#run >tbody> tr#d" + id).addClass("selectedrow");

        }


    });
  $("#fixedcolumntable").delegate("tr", "mouseup", function () {


        isMouseDown = false;

    });

1 Ответ

0 голосов
/ 13 марта 2012

Во-первых, вы, вероятно, хотите событие mouseenter вместо mouseover.Событие mouseover будет срабатывать несколько раз, если оно попадет в какие-либо дочерние элементы, которые могут быть частично ответственны за ваше замедление.

Чтобы обработать пропущенные события, вы, вероятно, должны отслеживать, в какую строку мышь опускаетсязатем на mouseenter выберите все строки между текущей и первой и отмените выбор остальных.Это дает дополнительное преимущество, позволяя перетаскивать мышь вверх, чтобы отменить выбор последней строки, вместо того, чтобы начинать заново, если вы случайно перетаскиваете слишком далеко.

...