2012-08-23 49 views
2

我想一個元素先用一個div取代,然後該專區將不得不追加一些孩子():如何追加孩子變成一個div在一行

$(el).html('<div></div>').append('<span></span>').append('<span></span>') 

不給我什麼我想要div和span是兄弟姐妹。

我也試過:

$(el).replaceWith('<div></div>').append('<span></span>').append('<span></span>') 

沒有成功。這條線不適用於AngularJS(指令)。

有沒有一種簡單的方法來使跨度的孩子的跨度?

UPDATE:

這是我最終使用:

$(element) 
    .html($('<div class="property-filter"></div>') 
    .append(labelElm) 
    .append(amountElm) 
    .append(sliderElm)); 

,因爲它很容易理解(我)。

感謝您的所有解決方案!

+2

我很好奇,爲什麼這必須在同一行辦呢?只因爲你可以不意味着你應該。 – jsmith

+0

我知道。但是,如果這可能會更好。代碼較少。更簡潔的代碼。 – wingy

+1

僅僅因爲你正在寫LESS代碼,並不意味着你正在做一件好事。從左到右考慮代碼的可讀性。當你回來幾個月後會發生什麼,你需要調試?您的可讀性會隨菊花鏈上的每個功能而降低。如果你想在生產中使用更少的代碼,爲什麼不使用工具來縮小? – jsmith

回答

5

您的代碼不起作用,因爲$(el).html('<div></div>')回報$(el)。這是連鎖的方法。

$(el).html($('<div></div>').append('<span></span>').append('<span></span>'));​ 

或者

$('<div></div>').append('<span></span>').append('<span></span>').appendTo(el); 
+0

這是唯一有效的工作。 – wingy

+0

@wingy,你說:「我想要一個元素首先被一個div替換」。這只是將div附加到已經存在的內容。 –

+0

他原來的解決方案是正確的。我已經告訴他把它改回來。如果他不這樣做,我會把這個標記爲正確的答案。 – wingy

1

試試這個

var div= $('<div></div>') 
var mm= $('<span>b</span>') 
var combnd= div.append(mm) 
var fresult=combnd.append(mm) 
fresult.appendTo(el)​ 
+0

在第一行添加了錯過的''' –

+0

@Claudio Redi:謝謝:) – Carlos

+0

沒有工作。他們仍然是兄弟姐妹。除了將變量分配給一個變量作爲jQuery元素之外,還有什麼區別? – wingy

1

$(el).html($('<div />').append('<span></span>').append('<span></span>'))

2

爲什麼就不能這樣做呢?

$(el).html('<div><span></span><span></span></div>') 
1

使用本

var div = $('<div></div>').append('<span></span>').append('<span></span>'); 

$(el).parent().html(div);​ 
1

這取代了$(el)的內容,就像你問:

$(el).html('<span />').append('<span />').wrapInner('<div />');​ 
相關問題