2013-10-07 67 views
0

我想寫更多的我的jquery 面向對象的方式,但我不工作, 你能幫忙嗎?結果我得到 是目標對象追加jquery對象爲什麼不通過這項工作

http://jsfiddle.net/Nrebv/

$(document).ready(function() { 

     var divA = $('<div>', { class: 'divA' }); 
     var btn = $('<span>', { text: 'MYspanBTN' }); 

     btn.click(function(){ 

      alert('test'); 

     }); 


     var divResult = $('<div>', { html: divA + btn }); 





     $('#main').append(divResult); 

}); 
+0

如何在」做這我不清楚......一個更面向對象的方式。 ..「 –

回答

3

替換此:

var divResult = $('<div>', { html: divA + btn }); 

與此:

var divResult = $('<div>').append(divA, btn); 

FIDDLE DEMO

0

也許是因爲class這是保留的關鍵字在JavaScript

Reserved Words - MDN

而且有關串聯,這是錯誤的,所以在使用:

var divResult = $('<div>').append(divA, btn); 

代替

var divResult = $('<div>', { html: divA + btn }); 
+0

*」也許是因爲JavaScript中保留關鍵字的類「* class是保留字,但在*特定的*地方OP使用它,它實際上是允許的。屬性初始值設定項的屬性名稱部分只需要是* IdentifierName *而不是* Identifier *(http://www.ecma-international.org/ecma-262/5.1/#sec-11.1.5)。令人驚訝,但確實如此。 –

+0

感謝提示,我會一直記住 –

2

有幾個問題有:

  1. class是一個保留字,所以在對象初始使用它作爲一個屬性名稱,則必須把它在引號中(單或雙,都可以)。其實,這不是事實。在你使用它的具體地方,它確實沒關係。但我不會推薦它。將它放在單引號或雙引號中:var divA = $('<div>', { 'class': 'divA' });

  2. html: divA + btn正試圖組合兩個對象實例。如果你的目標是結合他們的HTML,那麼html: divA.html() + btn.html()。如果你的目標是使divResult一組與這兩個元素,不要使用html可言,做到這一點:

    var divResult = divA.add(btn); 
    

    ...這將創建一個新的jQuery設置與這兩個集的內容(在你的情況下,他們每個只包含一個元素,所以divResult將最終包含兩個)。