2012-01-14 105 views
1

后我使用这个插件创建图表:http://www.filamentgroup.com/lab/update_to_jquery_visualize_accessible_charts_with_html5_from_designing_with/

的代码下面的工作,如果我通过在萤火控制台运行它,但如果我有它运行时,我重新加载页面,它不会加载图表。

我会猜测它,因为父元素是在DOM加载后创建的。

所以我想知道我是否可以用jQuery live()来解决这个问题?负载,如:

  • 请求用户位置
  • 显示单页视图(这是那里的元素通过JSON数据创建)

如何,我能得到我的插件火一旦任何想法新元素创建?

$('#snow-line').visualize({type:'bar'}); 

$('#resort-open').visualize({ 
    type:'pie', 
    colors: ['#658AB6','#FAFAFA'] 
}); 

UPDATE:

这是我如何通过我的JSON对象

var resortOpenPerc = loadResort.openDownHillPercent; 
var ressortOpenDiff = 100-resortOpenPerc; 

$("#resort-open tbody tr:eq(0) td:first").html(resortOpenPerc); 
$("#resort-open tbody tr:eq(1) td:first").html(ressortOpenDiff); 

渲染数据而这个错误被渲染:

Index or size is negative or greater than the allowed amount 
domain.com/visualize.js 
Line 201 

回答

2

“所以,我想知道如果我可以用jQuery活()火吗?”

号的.live()方法在部分大概是反对,因为它没有传达的事实,这是单纯的事件委托。

换句话说,它只适用于处理浏览器事件,而不是像插件一样的任意代码。


你说的元素创建“与Mustache.js和数据通过JSON加载”

我不知道你的代码是什么意思(因为你没有发布它),但是如果你在创建时没有直接访问新元素,那么只需选择它们之后,它们已被添加到DOM中,并在当时运行该插件。

// code to create new elements... 

$('#snow-line').visualize({type:'bar'}); 

$('#resort-open').visualize({ 
    type:'pie', 
    colors: ['#658AB6','#FAFAFA'] 
}); 

如果这不起作用,然后有一些其他的问题,你需要发布您的代码,以便我们可以看到这个问题。

+0

啊,我会记住live()。看看这里的代码:http://pastie.org/3185844 - 这个代码是通过一个名为loadSingleResort()的函数加载的: – Coughlin 2012-01-14 20:55:01

+0

我在几行上添加了一些注释,让你知道发生了什么。我正在使用这个通过JSON加载数据。 https://github.com/janl/mustache.js/ - 类似于jQuery模板 – Coughlin 2012-01-14 20:56:07

+0

正如你在你的例子中说的那样。我试图按顺序完成。 加载数据 用数据创建新元素 初始化图表并在屏幕上显示 – Coughlin 2012-01-14 20:57:12

0

我想你可以使用livequery插件:

$('#snow-line').livequery(function() { 
    $(this).visualize({type:'bar'}); 
}); 

$('#resort-open').livequery(function() { 
    $(this).visualize({ 
     type:'pie', 
     colors: ['#658AB6','#FAFAFA'] 
    }); 
}); 
+0

我只是试过,并没有奏效。我也尝试过使用该代码并通过Firebug中的控制台运行它,并且工作正常。也许它的插件?但是,即使它在创建新元素之后调用函数,它也不能工作。 – Coughlin 2012-01-14 20:31:21

+0

我正在用Mustache.js创建我的元素,并且正在通过JSON加载数据 – Coughlin 2012-01-14 20:32:02