0

我是 jquery 的新手,我对将 jquery 与 Processing.js 一起使用有疑问

我在侧边栏上有一些链接;他们每个人都是一堂课,在其中一堂课中,我有一个

<p>blablablablabla</p>
<div id='processing'></div>

()

然后,当用户点击课程(上面的内容)时,网页更新内容,并调用一个jquery插件,如果找到id #processing,则调用

$.Processing('#processing', 'afile.pde') 

(插件)

(function(){

var src = './processing-1.3.6.js'

$.Processing = function(parent, file){
    var appendScript = function(){
        $('head').append(function(){
            return $('<script></script>').attr('src', src).html('added processing script');
        })
    }

    var appendProcessing = function(){
        $(parent).append(function(){
            var $c = $('<canvas></canvas>');
            var p = Processing.loadSketchFromSources($c, [file])
            return  $c;
        });    
    }

    appendScript();
    appendProcessing();
}
}())

问题是函数'$('head')append 没有被调用。在 Chrome 上测试

谢谢

4

1 回答 1

1

1) Processing.loadSketchFromSources 需要一个普通的 createElement 对象,而不是 jQuery 对象。所以你需要改变这一行:

错误: var $c = $('<canvas></canvas>');
正确: var $c = document.createElement('canvas');

如果你真的需要 jQuery 对象,那么你需要使用 $c[0] 而不是 $c 从 jQuery 对象中获取纯 createElement,所以这也可以:
var p = Processing.loadSketchFromSources($c[0] , [文件]);

2) 不要在脚本标签中使用 </script> 字符串,因为它会结束你的脚本:

错误:返回 $('<script></script>')
正确:返回 $('<script></scr'+'ipt>')

3) <script> 标签内的 html 是不需要的,因为脚本里面没有 html 代码:
HTML not used: $('<script></scr'+'ipt>').attr('src', src).html('添加的处理脚本');
正确: $('<script></scr'+'ipt>').attr('src', src);

如果您想尝试查看代码,这是一个完整脚本正常工作的页面(加载和运行外部处理 .pde 文件):http:
//www.js.do/processing-js/gcravista-sample.htm

于 2012-06-15T17:37:09.897 回答