jQuery.remove()赢得';t删除动态输入项
我有一个文件上传部分。添加文件会触发上载并传回文件名。该文件名被添加到数组中的隐藏输入元素中。它也被截断并以jQuery.remove()赢得';t删除动态输入项,jquery,Jquery,我有一个文件上传部分。添加文件会触发上载并传回文件名。该文件名被添加到数组中的隐藏输入元素中。它也被截断并以的形式显示给用户 这将添加: function addFile(filename, imgName, id) { $("#fileGroup ul").append('<li id="file' + id + '" class="list-group-item attachment"><div class="pull-right"><a href="#
的形式显示给用户
这将添加
:
function addFile(filename, imgName, id) {
$("#fileGroup ul").append('<li id="file' + id + '" class="list-group-item attachment"><div class="pull-right"><a href="#" onclick="return trash_click(' + id + ')"><i class="btn-icon fa fa-trash"></i></a></div><span>' + filename + '</span></li>');
}
起初我认为可能是数组部分不允许删除,但我只使用一个简单的“#mytest”作为id进行了测试,但表单元素不会删除
想法?我找到了答案。显然,因为输入元素被附加到表单中,所以我必须专门调用表单来删除它
var request = 'RequestFileName[' + id + ']';
var myRequestFile = $("#requestForm input[name='" + request + "']");
myRequestFile.remove();
return false;
我找到了答案。显然,因为输入元素被附加到表单中,所以我必须专门调用表单来删除它
var request = 'RequestFileName[' + id + ']';
var myRequestFile = $("#requestForm input[name='" + request + "']");
myRequestFile.remove();
return false;
问题是括号[
]
是特殊字符,在选择器方面,因此必须对其进行转义才能正常工作。jQuery的“妙处”在于它只是默默地失败了,但是如果您尝试使用document.querySelector
运行相同的选择器,您会注意到有一个错误:
document.querySelector('#RequestFileName[1]')。值='1'代码>
问题在于括号[
]
是特殊字符,按选择器选择,因此必须对其进行转义才能正常工作。jQuery的“妙处”在于它只是默默地失败了,但是如果您尝试使用document.querySelector
运行相同的选择器,您会注意到有一个错误:
document.querySelector('#RequestFileName[1]')。值='1'代码>
$('#RequestFileName['+i+']')。删除()。。。将id改为i:“若要使用任何元字符(如!”#$%&'()*+,./:;?@[\]^`{124}~
)作为名称的文字部分,必须使用两个反斜杠进行转义:\\。例如,具有id=“foo.bar”
的元素可以使用选择器$(“#foo\\\.bar”)
,这是我的错误,无法将代码放入问题中。它实际上是:$('#RequestFileName['+id+'])。remove();在其上放置警报或断点,以查看函数中id的值。我怀疑这是单击的项目的整个id,而不是项目的编号。您确定文件名中没有空格$('#RequestFileName['+I+'])。remove();…将id改为I:“使用任何元字符(如!”。$%&')*+,./:;?@[\]^``{124}
)作为名称的文字部分,必须使用两个反斜杠进行转义:\\。例如,一个带有id=“foo.bar”
的元素可以使用选择器$(“#foo\\.bar”)
,这是我把代码放到问题上的错误之处。它实际上是:$('#RequestFileName['+id+']')。remove();在函数中放置一个警报或断点以查看id的值。我怀疑是点击项目的整个id,而不是项目的编号。你确定文件名中没有空格吗?你完全正确。谢谢你的正确答案。当然,没问题。知道这种棘手的事情总是好的你是绝对正确的。谢谢你的正确答案。当然,没问题。知道这种棘手的事情总是好的斯皮因的答案实际上是正确的。我在不知道最好的方法的情况下找到了一个解决办法。皮音的回答实际上是正确的。我在不知道最好的方法的情况下找到了一个解决办法。
function trash_click(id)
{
$('#file' + id).remove();
$('#RequestFileName[' + id + ']').remove();
return false;
}
var request = 'RequestFileName[' + id + ']';
var myRequestFile = $("#requestForm input[name='" + request + "']");
myRequestFile.remove();
return false;