返回Jquery prevObject而不是实际对象(canvas)。为什么?

时间:2014-01-10 20:02:01

标签: jquery

我有这样的代码( div ,其ID为“whole_page”,其中一个后代是画布

<div id="whole_page">
    <div>
        <canvas></canvas>
    </div>
</div>

如果使用 jQuery ,我会这样做:

console.log ($('#whole_page').find("canvas").length)

输出 1 (实际上如果找到画布,我后来通过.get(0)将其提取为HTML DOM)。

但如果我这样做(我正在编写一种jQuery插件):

$.canvasjQ = $('#whole_page').find("canvas").length;
console.log($.canvasjQ);

输出 0 (显然我不能.get(0)因为$ .canvasJQ 未定义)。

我用了很多钱。作为Javascript的“全局变量”(这是一个不好的做法?)的替代,对于简单的值或对象都是如此,我没有像这样的问题。

此外我想知道是否$。 被视为全局变量

编辑:如果尝试打印(我也试图反转第2行和第3行代码)

$.canvasjQ = $('#whole_page').find("canvas")
console.log($.canvasjQ); // Output: [prevObject: x.fn.x.init[1], ...... 
console.log($('#whole_page').find("canvas")); // Output: [canvas, prevObject: x.fn.x.init[1], context: ....

为什么输出不同(prevObject vs Canvas)?事实上,我期待画布,实际上如果我写作

console.log($('#whole_page').find("canvas").length;

结果 1 。 但如果我写(这应该是**等同**)

console.log($.canvasjQ.length);

结果是 0

提前感谢任何线索

1 个答案:

答案 0 :(得分:1)

删除canvas标签中的双引号

http://jsfiddle.net/cKzBZ/

<div id="whole_page">
    <div>
        <canvas></canvas>
    </div>
</div>