这是问题,不幸的是我们
have to support IE8.
所以我不得不从使用最新的jQuery 2.0变回 jQuery 1.9.
所以我不得不从使用最新的jQuery 2.0变回 jQuery 1.9.
现在我们使用大量的jQuery来加载仪表板的不同部分,我们淡出以前的屏幕并淡出新的屏幕.我以为我用here(prepend html)和here(ajax HTML)找到的解决方案解决了所有这些问题.
但是,下面相同的错误消息还有一个问题:
错误:
Uncaught TypeError: Cannot set property 'cur' of undefined
我已经将源缩小到loadResource函数,该函数用于切换内容.
基本上,如果我从下面的函数中注释掉这一行:
$content.fadeIn('fast');
并替换它
$content.show();
问题解决了,我们不再得到’cur’错误.然而,我们失去了淡入效果.
你如何解决这个问题,解决jQuery 1.9中的Uncaught TypeError,同时保持对$content的fadeIn效果?
var loadResource = function(url,params,callback) { WHOAT.networking.getToServerWithAjax(url,function (response) { var $content = $($.parseHTML(response.trim())); var $container = $('#dashboard-display'); var $content_to_hide = $container.children(); $.when($content_to_hide.fadeOut('fast')).then(function () { $content.hide(); $container.append($content); //$content.fadeIn('fast'); // <- buggy in 1.9.1 $content.show(); // <- works,but no fadeIn $content_to_hide.remove(); if(callback) { callback(); } }); }); // CSS updates... };
解决方法
奇怪!
好的,也许我是一个独特的案例,在摆弄并浏览jQuery和我们的模板之后.我把它缩小到这个特定的模板(Mako / Python):
##conditional to determine with the template should inherit from the base page ##it shouldn't inherit from the base page is it is being inserted into the page using ajax <%! def inherit(context): if context.get('isPage'): return "base_dashboard.mak" else: return None %> <%inherit file="${inherit(context)}"/> <div id="dashboard-profile-container"> <%include file="widgets/profile_widget.mak" /> </div> <div class="spacer-div"></div>
我所要做的就是删除space-div:
<div class="spacer-div"></div>
基本上,上面的模板正在加载导致问题的页面的HTML.我三重检查了HTML,一切都很好,但由于某种原因,这个空的spacer div导致了Undefined错误
可能由于某种原因,当jQuery尝试呈现页面时,额外的HTML节点导致了问题