2016-07-12 84 views
0

我有一個包含HTMLHTML串不附加

var myhtml = "<div><a>DEMO</a></div>"; 

的字符串變量之前,我追加HTML,我想改變它,所以我這樣做。

$("body").append($(myhtml).filter("a").addClass("testing")); 

但是,沒有附加任何東西,我沒有控制檯錯誤。我怎樣才能改變HTML並仍然正常追加它?

回答

2

還有就是要考慮兩件事情:

  1. filter改變上它被稱爲jQuery對象。在你的情況下,它只會保留a並刪除父母div。您應該使用findfind將返回一個新的jQuery對象,而不會改變原來的一個。
  2. 但是,您不能直接將調用鏈的結果插入到DOM中。 find返回一個新的僅包含a的jQuery對象。如果你想保留父div,你必須插入第一個jQuery對象。

var myhtml = "<div><a>DEMO</a></div>"; 
 
// Parse the string into a jquery object. 
 
var $myhtml = $(myhtml); 
 
// Add the "testing" class to the `a` child(ren). 
 
$myhtml.find("a").addClass("testing"); 
 
// Add a class to the root of $myhtml (i.e. the `div`) if needed. 
 
$myhtml.addClass("div-class"); 
 
// Append the jquery object. 
 
$("body").append($myhtml);
.testing { 
 
    background-color: yellow; 
 
} 
 
.div-class { 
 
    padding: 5px; 
 
    border-style: solid; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

謝謝。我將如何去做多個改動?例如,我將如何添加一個類到div元素呢? – guub

+0

'div'元素是你的jQuery對象的根,所以你可以在'$ myhtml'上使用'addClass'。 –

+0

看看我的編輯。 –

1

享受=)

var myhtml = "<div><a>DEMO</a></div>"; 
$("body").append($(myhtml).find('a').addClass("testing")) 

好,用DIV:

var myhtml = "<div><a>DEMO</a></div>"; 
var $div = $(myhtml); 
$div.find('a').addClass("testing"); 
$("body").append($div); 

祝你好運!

+1

此代碼只能追加'a'。 'div'被刪除。 –

+0

或者你只是想將類測試添加到「a」,並附加整個div的身體? –

+0

我試圖使用查找,我只得到'a'返回,但不是HTML的其餘部分 – guub