【问题标题】:#Dart: Divs are removed when jquery fires an event to an Dart callback method#Dart:当 jquery 将事件触发到 Dart 回调方法时,将删除 Div
【发布时间】:2013-06-25 15:35:25
【问题描述】:

我想将带有 dart 的事件处理程序添加到触发 js 事件的 div 中,所以我通过 jquery 执行此操作,
当从 div 触发事件时,会按预期调用回调方法,但会删除作为触发事件的 div 的父级的 div。

它们已完全从 dom 中删除。

js.scoped(() {
   js.context.$(new js.Callback.once(($) {
      $('#mySlider').on('change', new js.Callback.many(() {
           print('Element changed');
      }));
    }));
});

有人知道为什么 dart 或 jquery 会这样做吗?或者两者谁负责?

【问题讨论】:

    标签: javascript jquery dart


    【解决方案1】:

    在 dartium 中,以下代码应该可以工作:

    js.context.$('#mySlider').on('change', new js.Callback.many((_) {
      print('Element changed');
    }));
    

    使用 dart2js(也使用 $)你有两个选择:

    • 编译时使用--global-js-name 选项将$ 更改为其他内容。
    • 在加载 dart 脚本之前调用 $.noConflit() 以释放 jQuery 使用的 $ 并在上面的代码 sn-p 中将 js.context.$ 更改为 js.context.jQuery

    您的代码中有一些 cmets:

    • 不再需要使用js.scoped
    • 回调是用一个参数调用的,所以即使你不使用它也必须定义它(这就是为什么我使用_ 来处理这个我不关心的参数)

    【讨论】:

    • 好的,你的 cmets 真的很有帮助。 js.scoped 真的很不方便,$ 的问题在 5 分钟前出现,同时在 Firefox 中测试应用程序。但遗憾的是,它并没有解决我缺少 div 块的问题。
    • 我已经测试了我的代码 sn-p,它运行良好。我看不出有任何理由让这段代码删除一个 div。这种行为应该来自其他地方。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 2020-12-06
    相关资源
    最近更新 更多