单击bonsaijs形状后显示jquery UI对话框

时间:2012-11-02 11:27:18

标签: jquery bonsaijs

你好我有这个代码

$(function() {
  bonsai.run(document.getElementById('movie'), {
   code: function() {
     var rect= new Rect(0, 0, 100, 100);
     rect.on('multi:pointerdown', function(e) {
     $("#dialog-form").dialog("open");
     });
   },
   width: 500,
   height: 400,
  });
});

当我点击我的矩形时出现此错误:

  

ReferenceError:$未定义

如何获得有关jquery的参考?

3 个答案:

答案 0 :(得分:5)

BonsaiJS创建一个新的执行上下文(通常是一个Web worker),在bonsai.run内传递的代码在不同的范围内执行,其中jQuery不可用。有关BonsaiJS如何执行代码的详细信息可以找到here

但要解决您的问题,您可以与所谓的BonsaiJS跑步者上下文沟通:

$(function() {
  var movie = bonsai.run(document.getElementById('movie'), {
    // note: this function will be stringified and sent to the runner context
    code: function() {
      var rect= new Rect(0, 0, 100, 100).fill('red').addTo(stage);
      rect.on('multi:pointerdown', function(e) {
        // this is how you would pass data with your message
        stage.sendMessage('openDialog', {
          id: '#dialog-form'
        });
        // no data:
        // stage.sendMessage('openDialog', {});
      });
    },
    width: 500,
    height: 400,
  });
  movie.on('load', function() {
    movie.on('message:openDialog', function(data) {
      $(data.id).dialog("open");
    });
  });
});

答案 1 :(得分:0)

  • 确保jquery核心中的Jquery变量不会覆盖$ variable。

  • 加载脚本的顺序很重要,在jQuery加载后运行脚本。

答案 2 :(得分:0)

也许你在包含JQuery Javascript之前调用该函数?首先引用JQuery脚本。