淘汰赛2.2.0错误使用jQuery 1.9(Knockout 2.2.0 error with j

2019-07-18 13:51发布

我复制的knockoutjs的一个例子:

    <!DOCTYPE html>
    <html>
    <head>
      <script src="http://code.jquery.com/jquery-1.8.0.min.js"></script>
    <script src="http://cdnjs.cloudflare.com/ajax/libs/knockout/2.2.0/knockout-min.js"></script>

    <meta charset=utf-8 />
    <title>JS Bin</title>

    </head>
    <body>


    <h2>Participants</h2>
    Here are the participants:
    <div data-bind="template: { name: 'person-template', data: buyer }"></div>
    <div data-bind="template: { name: 'person-template', data: seller }"></div>





    <script id="person-template" type="text/html">
        <h3 data-bind="text: name"></h3>
        <p>Credits: <span data-bind="text: credits"></span></p>
    </script>

    <script type="text/javascript">
         function MyViewModel() {
             this.buyer = { name: 'Franklin', credits: 250 };
             this.seller = { name: 'Mario', credits: 5800 };
         }
         ko.applyBindings(new MyViewModel());
    </script>
    </html>

当我更新了jQuery 1.9版本 ,我得到了以下错误:

Uncaught TypeError: Object function (e,t){return new st.fn.init(e,t,X)} has no method 'clean' 

我会很感激,如果有人可以解释,如果错误是在jQuery的或KO。

Answer 1:

原因

您没有使用淘汰赛的最新版本。 以前的版本,2.2.0,是使用jQuery 1.9.x的和不兼容的。 请参阅此淘汰赛开发主题 :

淘汰赛2.2.0使用jQuery.clean(),它已被弃用,在1.9不存在。

这意味着,敲除2.2.0正在呼叫一个未定义的jQuery方法,从而触发指定的JS错误。

解决方案

  1. 考虑更新到最新版本的淘汰赛的是使用jQuery 1.9兼容
  2. 如果不能,则使用jQuery的迁移插件这增加了向后兼容的jQuery 1.9
  3. 如果一切都失败了,你需要恢复到的jQuery 1.8


Answer 2:

更新淘汰赛2.2.1解决了这个问题对我来说:

  • 2.2.0: http://jsfiddle.net/UDSBC/2/
  • 2.2.1: http://jsfiddle.net/UDSBC/1/

所以,只是改变:

<script src="http://cdnjs.cloudflare.com/ajax/libs/knockout/2.2.0/knockout-min.js"></script>

至:

<script src="http://cdnjs.cloudflare.com/ajax/libs/knockout/2.2.1/knockout-min.js"></script>

它会工作。



文章来源: Knockout 2.2.0 error with jQuery 1.9