0

所以我有这个表格:

<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');了,也没有用。

4

4 回答 4

1

尝试更换

$(element+'.fieldname').remove();

$(element+' .fieldname').remove();
于 2012-04-26T18:51:10.317 回答
1

如果我得到了这个来源,一方面,当您使用 add_fieldname 函数添加字段名时,您在输入中没有 ID。您可能需要设置它以方便使用。另一方面,在 remove_hidden 函数中,您警告了element .fieldname,但试图删除element.fieldname(注意类名前面缺少空格),所以我认为您在 remove_hidden 函数中需要这个:

$(element+' .fieldname').remove();

我希望它有所帮助。

于 2012-04-26T18:51:22.037 回答
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();

编辑:在上面添加了评论以澄清一些事情

于 2012-04-26T18:51:22.510 回答
0

这是因为 .remove([selector]) “过滤匹配的元素集”来决定要删除的内容。

他们的文件起初让我失望。您尝试删除的内容已经需要在集合中(remove 方法中的选择器不会删除整个集合)。

例如:删除 input.fieldname:

$(element).find('.fieldname').remove('.fieldname');

或(对于较大的案例收集案例):

$(element).find('input').remove('.fieldname');

例如:不要删除 input.fieldname:

$(element).find('input').remove('.notfieldname');
于 2015-11-20T22:02:27.610 回答