Query.swap 向后兼容性

Query.swap Backwards compatibility

我正在尝试在我的网站上使用名为 flexcal 的日期选择器。准确地使用它对我来说很重要,可以从犹太日历中进行选择。我的站点基于 jQuery v3.3.1,但 flexcal 是为 jQuery v2.1.3 设计的。我认为它不会造成任何问题,但我遇到了以下错误:

Uncaught TypeError: $.swap is not a function

搜索后,我发现 here 这是一种旨在私有且从未记录的方法,无论如何,目前我在我的网站上嵌入小部件时遇到了问题。查看小部件的源代码可以发现该方法的使用如下所示:

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

有谁知道该方法的目的是什么,它是否有并行替代方案或其他一些故障排除建议?

如果您查看 jQuery.swap (https://github.com/jquery/jquery/blob/3.4.1/src/css/var/swap.js) 的源代码,您会发现它所做的只是暂时更改第一个参数 (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;