2012-11-26 103 views
2

試圖理解這裏的東西:如果我從javascript呈現東西到DOM的DOM,並且想調用它的jQuery方法,它的行爲不同於如果我「重新從DOM中選擇「元素。下面是一個簡單的例子,在CoffeeScript中:jQuery:將元素渲染到DOM,然後用jquery選擇器選擇它

element = """ 
    <div id="my_div">TEST!</div> 
    """ 

$('body').html(element) 
element.hide() #this doesn't work. 
$(element).hide() #this doesn't work either. 

$('div#my_div').hide() #this does. 

所以,我似乎在這裏誤解了一些東西。我猜元素變量只是一個字符串,jQuery不明白它已經添加爲DOM中的一個元素。

是否有不同的方法將內容插入到dom中,然後,它就像插入正常選定的jQuery對象一樣工作?

回答

7

第一行不起作用的原因是因爲元素是一個字符串。第二行不起作用的原因是因爲它最終創建了另一個字符串的DOM版本。

的解決將是維持裁判的元素的DOM版本你第一次構建它(在JS):

var $elem = $(element); 
$elem.appendTo(document.body); 
$elem.hide() // should work 

希望有所幫助。

+0

完美,謝謝你的解釋! – Andrew

2

我想你需要:

element = $('<div id="my_div">TEST!</div>');