2011-11-11 126 views
1

我正在爲我的web應用程序使用jquery,並且正在創建一個數字下移框。爲此,我用預定義的div替換輸入<input type="text">字段。.html()返回空

事情是我想要的原始輸入框的HTML,因爲它可能有樣式等補充說我想我的.replaceWith版本也有。

例如
當前代碼<input type="text">
新代碼

<div> 
    <input type="text"> 
    <div> 
     <!-- Other Stuff --> 
    </div> 
</div> 

因此,大家可以看到我需要重新沿側做父元素輸入控制。我目前的做法是重新生成一切,並使用.replaceWith()方法將其全部粘貼。

任何想法?

+0

你可以發佈你正在使用的JQuery代碼嗎?將更容易弄清楚發生了什麼。 –

回答

3

我不完全確定你想要做什麼,但看起來你想圍繞input包裝父div,並在其後添加另一個div。如果是這樣的話,你可以這樣做:

$("input").wrap("<div></div>").after("<div></div>"); 

這樣,你不需要更換input,因爲它會留在DOM。 wrap將圍繞所選元素包圍參數,並且after將在所選元素之後插入內容。

這是working exampleinput

+0

這是我正在尋找的幾乎我想要添加額外的按鈕到一個輸入框,所以這樣的 $(「#myInput」)。addExtraStuff();這個類將圍繞一個div與另一個div附加到按鈕的輸入 – TheMonkeyMan

1

元素真的不包含 HTML,而是在input標籤將包含其父容器(在這種情況下div)中的HTML。所以你可能會考慮將它放在一個專用的內部容器中,然後移除並替換它。

+0

我不認爲OP意味着內容中的「輸入」的HTML,而是指的是元素本身的HTML, 「因爲它可能會添加樣式等」 –

+0

@JamesAllardice我不是指_contents_;我的意思是從一個容器中抓取HTML本身的''。我說的是,在'input'上調用'html()'不會給你'' - 你需要在它的容器上調用它。 –

+0

對不起,是的,重新閱讀你的答案我明白你的意思。 –

0

也許你正在使用一個錯誤的選擇

給你的輸入或whateever一個ID,然後做類似

$('input#yourid').replaceWith('Insert your desired html'); 

參考JQuery API

0

<input />元素不是一個容器,所以它會沒有HTML值。如果您在文本框中輸入的文字之後,請改用.val()方法。

+0

我不認爲OP是指內容中的'input'的HTML,而是指代元素本身的HTML,「因爲它可能會添加樣式等」 –

+0

@James Allardice足夠公平,但似乎值得一提,以防萬一。 –

1

如果您在<input>元素上使用jQuery的.html(),它會返回空值,因爲它沒有內容,只有屬性。

事情是我想要得到的原始輸入框的HTML,因爲它可能具有的風格等加入

你可以得到原始輸入框的styleclass屬性,然後將它們應用到你生成的<div>元素,例如,這樣的事情:

$("someselectorforyournewdiv").addClass($("input").attr("class")); 
// and/or 
$("someselectorforyournewdiv").attr("style", $("input").attr("style")); 

(顯然調整選擇,以適應)

,但不會產生你的元素有自己的風格做一個漂亮的「UPDOWN盒子」?如果您也從輸入中應用原始樣式,它可能無法正常工作,除非您選取某些不會影響形狀的樣式,例如顏色或其他類型的樣式。