2015-09-12 22 views
0

我試圖在點擊鏈接時顯示加載圖標,以便用戶知道應用程序正在加載。我在申請這樣說:主幹獲取之前的.css()樣式不起作用-jquery

var list = new List(); 
$("#link").on("click",function(){ 
    $("#cont").css("opacity", 0.4); // to grey out the background area 
    $("#loading").css({"display": "block"}); 
    list.fetch({ 
     //do something here 
    }); 
} 

小提琴:http://jsfiddle.net/dfvxg5qz/1/

但是,頁面不顯示加載圖標也不會變灰,按透明度樣式。我調試,看看問題出在哪裏,我發現只有當我試圖獲取.css()屬性沒有得到應用的東西,否則,如果我只是呈現一個頁面或做骨幹保存,應用.css屬性並穿上加載圖標。 我不確定發生了什麼事,或者如果有任何其他方式,我可以在提取發生之前單擊顯示加載符號。 我發現在計算器非常相似,即時通訊面臨的一個問題:

Backbone Model fetch steps on loading indicator in Chrome & IE

但does not看起來像它已經解決了,所以還停留在那個...... 任何想法如何實現這一目標? 謝謝〜

+0

你的小提琴是不起作用的/不提供太多價值這個背景。我可以添加的是,在問題的示例代碼片段的最後,你缺少''''。確保你使用的是正確的JS棉絨。 –

+0

此外,這個問題似乎並不涉及Backbone,而是涉及到jQuery(特別是:在回調中利用'.css' jQuery函數的點擊處理程序)。你可能會考慮改寫你的問題。 –

+0

我認爲@MatthewVita是正確的,因爲你沒有向我們展示足夠的東西來調試任何東西。這聽起來像也許是獲取觸發器事件,調用一個方法,刪除加載指標,但誰知道我們什麼時候有這麼少去.. – mtl

回答

0

在你撥弄我看到:

render: function(){ 
    $("#link").on("click",function(){ 
     $("#cont").css("opacity", 0.4); // to grey out the background area 
     $("#loading").css({"display": "block"}); 
     getdata(); 
    }); 
}, 

骨幹,在render()函數通常將數據從服務器獲取之後執行的,所以我建議你應該在你的initailize用戶on方法功能,只是試試這個:

initialize: function(){ 
     this.template = lisTmpl; 
     $("#link").on("click",function(){ 
     $("#cont").css("opacity", 0.4); // to grey out the background area 
     $("#loading").css({"display": "block"}); 
     getdata(); 
    }); 
}, 

此外,你不應該在一般的重寫render()功能,或模板可能不會被渲染成功!如果你需要在渲染後添加函數,我推薦名爲Marionette的Backbone插件,它提供了很多回調函數,例如onRender,看到這個: http://marionettejs.com/

+0

我試過這個:http://jsfiddle.net/dfvxg5qz/2/但不幸的是事件沒有聽到點擊鏈接時,我設置它初始化:()我設置一個調試器,它永遠不會停止在調試器上點擊...有沒有其他辦法可以處理這種情況..謝謝! – user1234

+0

在你的代碼中,你應該首先使用腳本導入backbone.js!並且在初始化從骨幹網創建的對象時執行initialize()函數。我想你應該首先學習如何使用backbone.js,看看這裏:http://backbonejs.org/ – LiuGui