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 に答える