2012-01-14 109 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