2012-03-09 54 views
1

我只有:添加新的輸入,並使用此不修改HTML

<div> 
    <textarea id="names"></textarea> 
</div> 

我不能修改HTML。我只能使用jQuery。能夠製造類似:

<input type="checkbox" id="yes"> 
<div style="display:none"> 
    <textarea id="names"></textarea> 
</div> 

$("#yes").click(function(){ 
    $("#names").parent().show(); 
}) 

默認如果頁面加載並準備應該是唯一的:

<input type="checkbox" id="yes"> 

如果我檢查這個,然後告訴我有textarea的股利。

是否可以不修改HTML?如果是,如何?

FIDDLE:http://jsfiddle.net/2ZMQz/

回答

3
var checkbox = $('<input type="checkbox">'); 
var parent = $('#names').parent().hide().before(checkbox); 

checkbox.click(function() { 
    parent.toggle(); 
}); 

http://jsfiddle.net/2ZMQz/14/

+0

你錯過了在複選框 – MMM 2012-03-09 13:53:28

+0

感謝ID,但它沒有必要在這個例子。 – binarious 2012-03-09 13:54:06

+0

謝謝,但爲什麼我不能爲此添加自己的文本? http://jsfiddle.net/2ZMQz/16/ – 2012-03-09 14:07:07

1

請嘗試以下

$("#names").parent().hide().before('<input type="checkbox" id="yes" />'); 

可以使用的切換,而不是顯示

改善複選框功能
$("#yes").click(function(){ 
    $("#names").parent().toggle(); 
}) 

顧名思義它會切換可見性,所以如果您取消選擇複選框,它將隱藏內容。

http://jsfiddle.net/2ZMQz/7/

+0

當'#yes'被選中時,你的textarea被隱藏了 – binarious 2012-03-09 13:55:41

+0

謝謝,我忘了隱藏它。 – MMM 2012-03-09 14:00:12

+0

+1。用相同的代碼打敗我,也可能有我的小提琴[編輯]。 – 2012-03-09 14:12:31

0

是的,你可以做到這一點。

$("#names").parent().hide().before('<input type="checkbox" id="yes">'); 

$("#yes").click(function() { 
    if ($(this).is(':checked')) { 
     $("#names").parent().show(); 
    } else { 
     $("#names").parent().hide();  
    }}); 

http://jsfiddle.net/2ZMQz/15/

+0

謝謝,但我如何添加自己的文字呢? http://jsfiddle.net/2ZMQz/18/ – 2012-03-09 14:09:08