2011-10-20 68 views
0

我有這個頁面我做的Javascript和jQuery一些測試:JS Tests複合JavaScript元素

我有關於如何創建,不知道這是正確的任期幾個問題,但複合通過Javascript進行控制。在Flash之類的東西中,你需要創建Object類,讓getters和setter,繪製圖像等。在JS中,它似乎是一個非常不同的思維過程。我的主要問題是你如何創建多個元素與getter和setter被渲染,過濾,並在Javascript中進行交互?

關於這個例子的主要代碼坐着用:

var html = (function(){ 
    // var FRAG = $(document.createDocumentFragment()); 
    htmlBox = $(document.createElement("div")); 
    var eTitle = $(document.createElement("h4")); 
    var ePrice = $(document.createElement("p")); 

    // set class first 
    htmlBox.addClass("box") 
    htmlBox.css({ 
     backgroundColor : color 
    }) 

    // set text values 
    eTitle.text(title); 
    ePrice.text("$" + price); 

    htmlBox.append(eTitle) 
    htmlBox.append(ePrice) 

    return htmlBox; 
})(); 

...箱()類中。如果有人可以看看來源並讓我知道什麼是不對的,那會很棒。

編輯

下面是這個例子的最終結果。一些物流工作,但我後。

http://geerswitch.in/tests/obj/

至於jQuery的創建節點,內置的JS版本能正常工作,並在谷歌的一些研究表明,非jquery的方式不管怎樣(大多數情況下更快,看起來更壞,國際海事組織)

+0

你可能更喜歡客戶端模板引擎(jQuery很好),因爲它看起來更合適。你的文檔片段是一個好主意,儘管jQuery IIRC在複合語句中爲你做了這些工作,所以不需要做所有的辛苦工作 - 不會有太大的收穫,而且你的代碼更長。 – davin

回答

1

你這樣做幾乎是正確的。您已創建Box類來表示您的高階UI元素,您正在爲每個元素實例化它,並且您的主程序正在通過其接口操縱元素。唯一缺少的是公共接口和私有實現之間的分割。即使Box界面明確暗示price應該在施工時設置並且從不進行修改,也沒有什麼可以阻止我現在執行myBox.price += 10

JavaScript沒有像「private」和「public」這樣的可見性修飾符,但您可以自己創建相同的效果。詳情請查看Douglas Crockford's explanation。談到JavaScript時,克羅克福德是一個有見識的天才,他是JSLint和JSON背後的大腦。

+0

謝謝你們。這只是獲取JS模式的問題:) – Phix