如果使用数据工具提示和标记中的HTML注释从Knockout自定义绑定调用Foundation Reflow,则会导致错



伴随jsFiddle再现问题:http://jsfiddle.net/ComradeF/M9e94/

我在一个项目中使用Foundation和Knockout。我面临的挑战之一是,当需要呈现新的选项卡时,Knockout会遵守,但单击选项卡不会有任何作用。解决方案是在自定义绑定中调用$(document).foundation('reflow')。不幸的是,这个解决方案可能不够充分,或者完全错误,因为它现在与我收到的一个错误有关。

我试图通过标记中的data-tooltip属性向选项卡及其部分内容添加工具提示,但在jQuery 2.1.0的第1422行出现错误。该行为elem.getAttribute( name ),错误为undefined is not a function。在这种情况下,elem是一个注释,因此没有getAttribute()功能。

可以通过删除标记中的注释(<!-- this is a comment -->(或删除选项卡链接中的data-tooltip属性来消除错误。

我意识到快速解决方法是从标记中删除HTML注释,但我觉得这可能是更糟糕的东西潜伏的症状。。。所以我宁愿调查和解决,而不是采取简单的方法。

我也遇到过同样的问题(除了我正在处理Angular js项目(。

我还没能找到解决方案,但我已经找到了解决办法。如果有人知道一个好的解决方案,请告诉我。

我的工作是缩小$(document).foundation('reflow');的范围,以避免任何html注释元素(不幸的是,这在Angular js应用程序中是必要的,也是常见的(。

例如$(element.find("nav")).foundation('tooltip', 'reflow');这至少阻止了在我的特定用例中发生的错误。

我尝试使用sacumminis的解决方案来修复此问题,该解决方案删除了异常,但也使我的工具提示停止工作。

然而,阿尤什·古普塔提出了一个完美的解决方案。我在Angular而不是Knockout中使用它,所以我只是把它放在我的app.js文件的早期。你需要做的是在应用程序代码的早期添加这段代码:

Object.getPrototypeOf(document.createComment('')).getAttribute = function() {}

错误现在已经消失,工具提示工作正常。希望它能帮助到别人。

相关内容

最新更新