2013-09-26 42 views
0

我當前的代碼是這樣的如何獲得elemnt包括聽衆的內容

var existing = element.children().clone(true); 
element.empty(); 
// Do some stuff with element 
/* ... */ 
// Restore the previous content. 
element.empty().append(existing); 

這工作得很好,只要要素不直接包含在它之下的文本。我的意思是這樣的:

// Works great, because .children() will get tag2 and tag3, etc. 
<element><tag2>...</tag2><tag3>...</tag3></element> 

// Doesn't work, because .children() doesn't get the text node. 
<element>some_text<tag2>...</tag2></element> 

所以我試圖用.contents(),但是我已經連接到我的初始元素的一些事件(這就是爲什麼我用在當前代碼.clone(true))和.contents()沒有得到元素與他們的事件。

你知道我可以使用的其他方法嗎?或者你能幫我寫一些代碼,可以做我想做的事情而不會太複雜嗎?

非常感謝。

編輯

我創建了這一點:http://jsfiddle.net/Jv6rW/給你看。我希望當你點擊'點擊'時,它應該顯示警報消息。

+1

我會委託的事件,而不是。 – undefined

回答

1

您應該使用。對()方法綁定事件。然後,你可以實現你想要做的這種方式

var existing = element.html(); 
element.empty(); 
    // Do some stuff with element 
/* ... */ 
// Restore the previous content. 
element.append(existing); 
+0

我創建了一個小提琴:jsfiddle.net/Jv6rW與'.on',它不工作,因爲我想 –

+0

好的謝謝,我明白了:http://jsfiddle.net/Jv6rW/1/ –

2

與其試圖克隆事件偵聽器,爲什麼不使用on()事件委託來爲您做這件事?

http://api.jquery.com/on/

+0

我創建了一個小提琴:http://jsfiddle.net/Jv6rW/與'.on',它不工作,因爲我想要 –

+0

好吧,我明白了:http://jsfiddle.net/Jv6rW/1/ –