2012-02-21 31 views
0

我正在寫一個javascript庫,我需要使用jquery的append方法將內容添加到div。我認爲append()將"straight strings"視爲文本,將$("<div>html objects</div>")視爲html,但顯然如果使用append("<p>"),則會將字符串解析爲html,這意味着需要在添加字符串之前對其進行編碼。如何選擇是否要將文本或html附加到div一般?

我想使用一些像append一樣工作的東西,但它可以區分字面上的字符串和要根據參數進行分析的字符串。由於這是一個庫,我不想重複所有的函數來創建每個函數的text()和html()版本。

例如,我希望能夠添加字符串​​而不將其解析爲html,但是當我想添加與html相同的字符串時,我會將$("<p>xx</p>")作爲參數傳遞。

編輯:基本上我厭倦了看到教程使用append()追加文本,因爲它不追加文本,它附加html。我想知道是否有方法區分附加字符串和附加html對象。

+3

所以,你要的jQuery神奇地知道,當你包含HTML字符串就是純文本,因此任何HTML需要轉義,當字符串_meant_是HTML?簡單!只需安裝「jQuery-mindReading」插件即可。 – 2012-02-21 22:48:34

+0

我說對我來說''(「...」)'和'「...」'應該是不同的意思。是否有可能做這樣的事情? – mtanti 2012-02-21 22:51:03

+0

哦。好吧。那麼,一個是一個字符串,而另一個是一個對象。從那裏出發。 – 2012-02-21 22:51:53

回答

2
function foo(arg) { 
    if (typeof arg === "string") { 
     console.log("Encode it!"); 
    } 
    else { 
     console.log("Don't bother"); 
    } 
} 

foo("hi!"); 
foo($("<b>hi!</b>")); 
+0

所以我應該手動做這個?我在一個案例中使用text(),在另一個案例中使用html()? – mtanti 2012-02-21 22:55:00

+0

@mtanti:您必須在_some_級別編程邏輯... – 2012-02-21 23:00:06

+0

但是通過文本()添加直接文本的唯一方法是? – mtanti 2012-02-21 23:01:29