我正在努力将大型应用程序从非常古老的 1.11.2 升级到最新的 jQuery 3.0。我发现非常微妙的变化破坏了我们的一些功能:
当我们实例化一些复杂的小部件时,我们最初使用 css 隐藏了一些元素(不显示)。然后我们使用 show/hide 来显示元素。
但是在小部件附加到 DOM 之前可能会调用显示/隐藏。当未附加元素时,显示/隐藏在 1.11.2 中可以正常工作,但在 3.0.0 中无法正常工作。
演示:
.tabCompositeSearchWidget-ClearButton
{
/* Clear button is initially hidden */
display: none;
}
var e = document.createElement('div');
$(e).addClass('tabCompositeSearchWidget-ClearButton');
$(e).text('blah');
$(e).show();
$('#root').append($(e));
alert($(e).is(":visible"));
在旧版本中元素将可见并且警报会说true
,在最近的版本中它将不可见并且警报会说false
很难找到所有这样的用法,我对解决这个问题的最佳方法很感兴趣:这里最好的解决方法是什么?手动修改 jquery.js 文件以使其以旧方式运行?(我真的不想这样做)
更新:修复一次性案例很容易。但是可能有数十个这样的电话,找到并修复所有这些电话需要付出巨大的努力,而且效果不佳。