質問: $(this).prop('files')[0]; $(this).nextAll('#input-label').replaceWith($('削除').clone(true)); $(this).nextAll('.filename').html(file.name); }); $(document).on('click', '.file_clear',function(){ $(this).replaceWith($('ファイルを選択').clone(true)); $(this).prevtAll('input[type="file"]').val(null); $(this).prevAll(".filename").html("選択されていません"); }); ``` ### 補足情報(FW/ツールのバージョンなど) 動作の流れ ”ファイルを選択ボタン” ↓クリック ”削除ボタン”に切り替え(生成)”、同時に.filenameを変更 ↓クリック ”ファイルを選択ボタン”に切り替え(生成)、同時に.filenameを変更
回答: いろいろ突っ込みどころがありますが * まず、「prevtAll」→「prevAll」 * nextAll('#input-label')・・・idで指定しているのでnextで位置関係を指定する必要ある? * nextAllやprevAllなどすべての要素を対象とする意味ある? * 自分を書き換えた後自分との相対位置を探すのはNG * 削除ボタンの後ろの.filenameを操作しているのに削除ボタンでは前の.filenameを掴むの? sample ======= 総じてこんな感じ 想定と違う構成でしたらHTMLも提示した上で挙動を再度説明してください ``` ``` 追記 === 今回の課題はlabelのforが消えてしまうため、 削除ボタンを押した後ファイル選択が効かないことです 削除せずに非表示にするとかで対応してもよいかもしれません ``` ファイルを選択 選択されていません ファイルを選択 選択されていません ```