Query.swap Обратная совместимость - PullRequest
0 голосов
/ 31 января 2020

Я пытаюсь использовать на моем сайте средство выбора даты, известное как flexcal . Для меня важно использовать это точно, чтобы позволить выбор из календаря Jewi sh. Мой сайт основан на jQuery v3.3.1, но flexcal был разработан для jQuery v2.1.3. Я думал, что это не должно вызывать никаких проблем, но я столкнулся со следующей ошибкой:

Uncaught TypeError: $ .swap не является функцией

После поиска я обнаружил здесь , что это метод, который должен был быть закрытым и никогда не был задокументирован. Во всяком случае, в данный момент у меня возникают проблемы с встраиванием виджета на мой сайт. Изучение исходного кода виджета показывает, что использование метода выглядит следующим образом:

return $.swap(
            parent,
            {display:'inline-block'}, // make it visible but shrink to contents
            swapper.bind(this, elem, parent.parentNode)         
        );

Кто-нибудь знает, какова цель метода, есть ли у него параллельная альтернатива или какой-либо другой совет по устранению неполадок?

1 Ответ

1 голос
/ 03 февраля 2020

Если вы посмотрите на источник jQuery.swap (https://github.com/jquery/jquery/blob/3.4.1/src/css/var/swap.js), вы увидите, что все, что он делает, это временно изменяет некоторые CSS атрибуты первого аргумента (parent, в вашем случае), запустите расчет и восстановите исходные значения атрибута. Вы можете реализовать это самостоятельно. Это особенно легко в вашем случае, поскольку единственный атрибут CSS, который мы временно изменяем, это display:

var old_display = parent.style['display'];
parent.style['display'] = 'inline-block';
var ret = swapper.bind(this, elem, parent.parentNode).apply(parent, []);
parent.style['display'] = old_display;
return ret;
...