だから私はこのフォームを持っています:
<form id="imageinputpopup" class=suggestionsubmit style="display: none">
<span>Add a thing!</span><br/>
<label>url: </label><input name="imageurl" type="url"><br/>
<label>file: </label><input name="imagefile" type="file"><br/>
<input type='hidden' name='schoolid' class="schoolid">
<input type="submit" value="Submit">
</form>
そしてこのクリックハンドラー:
$(".allow-submission").live('click', function(){
if($(this).attr('inputtype')=="colorpicker"){
....
} else if($(this).attr('inputtype')=="image"){
remove_hidden("#imageinputpopup");
add_fieldname($(this), $("#imageinputpopup"));
$("#imageinputpopup").dialog();
} ....
});
remove_hiddenは次のようになります。
function remove_hidden(element){
alert($(element).children('.fieldname').length);
$(element+'.fieldname').remove();
alert($(element).children('.fieldname').length);
}
add_fieldnameは次のようになります。
function add_fieldname(element, addto){
var elementname = document.createElement('input');
elementname.type = 'hidden';
elementname.name = 'fieldname';
elementname.value = element.attr('fieldname').replace(' ', '_');
$(elementname).addClass('fieldname');
addto.append(elementname);
}
予想どおり、クリックするたびに、次のようなタグが追加されます。
<input type="hidden" name="fieldname" value="mascot_image" class="fieldname">
しかし、remove_hiddenは削除されていません!アラートはこれらの入力タグの数とまったく同じであるため、セレクターが正しいことはわかっていますが、削除されていないだけです。なんで?私も試しましたが$(element+).remove('.fieldname');
、それもうまくいきませんでした。