所以我有这样的表格:
<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');
,但也没有。
答案 0 :(得分:1)
尝试替换
$(element+'.fieldname').remove();
与
$(element+' .fieldname').remove();
答案 1 :(得分:1)
如果我正确获得此源代码,一方面,当您使用add_fieldname函数添加字段名时,您在输入中没有ID。您可能希望将其设置为易于使用。
另一方面,在remove_hidden函数中,您提醒element .fieldname
,但尝试删除element.fieldname
(注意类名前面缺少的空格),所以我认为你需要这个remove_hidden函数:
$(element+' .fieldname').remove();
我希望它有所帮助。
答案 2 :(得分:1)
在这一行remove_hidden
//Select the element with the id of element AND has the class of fieldname
$(element+'.fieldname').remove();
尝试在.
之前加一个空格,如下所示:
//Select the children of element which have a class of fieldname
$(element+' .fieldname').remove();
编辑:在上面添加评论以清除一些内容
答案 3 :(得分:0)
这是因为.remove([selector])"filters the set of matched elements"决定要删除的内容。
他们的文件一开始就让我失望了。您要删除的内容已经在集合中(remove方法中没有选择器会删除整个集合)。
例如:删除input.fieldname:
$(element).find('.fieldname').remove('.fieldname');
或(对于较大的案例收集案例):
$(element).find('input').remove('.fieldname');
例如:请勿删除input.fieldname:
$(element).find('input').remove('.notfieldname');