Заморозить динамические столбцы таблицы без уродливой петли и фиксированной ширины / левых значений?

Ваш помощник вызывается, потому что вы объявили sample в качестве вспомогательного модуля, который должен быть вызван для перевода названий вашего меню. Но проблема в том, что в вашем config.xml вы объявили своих помощников для вашего модуля, вызываемого через строку helloworld, а не sample. Два способа исправить это.

Первый способ (и наиболее согласованный здесь, учитывая имя вашего модуля), изменить вызов вашего помощника следующим образом:

<helpers>
    <sample>
        <class>Lern_Sample_Helper</class>
    </sample>
</helpers>

ИЛИ второй способ, изменить помощник модуля, вызванный в вашем объявлении меню, например:

<menu>
    <sample module="helloworld">
        <title>Sample Module</title>
        <sort_order>100</sort_order>
        <children>
            <sample module="helloworld">
                <title>Sample Module</title>
                <sort_order>0</sort_order>
                <action>admin_sample/adminhtml_index</action>
            </sample>
        </children>
    </sample>
</menu>
0
задан SeaBass 19 January 2019 в 20:25
поделиться

1 ответ

Я бы даже не стал заморозить элементы (если я правильно понимаю, что вы собираетесь делать). Скорее создайте функцию, которая клонирует N рядов строк вместе с заголовком и расположите их абсолютно поверх оригиналов. Возможно, при необходимости добавьте фильтр невидимости на оригиналы.

РЕДАКТИРОВАТЬ:

Я снова смотрел на код. Вы можете получить некоторое повышение производительности, переместив столько же, сколько общие атрибуты за пределы цикла jquery. Примерно так:

$.fn.newFreeze = function(num) {
  var left = 0;
  for (var i = 1; i < num + 1; i++) {
    left += i === 1 ? 0 : $(`th:nth-child(${i - 1})`).outerWidth();
    $(`th:nth-child(${i}),td:nth-child(${i})`).each(function() {
      $(this).css({
        left,
        zIndex: 4,
      })
    })
  }
}
th, td {
  position: sticky;
  position: -webkit-sticky;
}
0
ответ дан Etwillms 19 January 2019 в 20:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: