Javascript 未定义元素jQuery$(Element).remove()
我有一个添加表单字段的JavaScript,以及删除该字段的链接:Javascript 未定义元素jQuery$(Element).remove(),javascript,jquery,asp.net-mvc,dom,Javascript,Jquery,Asp.net Mvc,Dom,我有一个添加表单字段的JavaScript,以及删除该字段的链接: var fieldCount = 0; function addField() { var name = 'file' + fieldCount; var row = 'row' + fieldCount; var str = '<p id="' + row + '"><label for="' + name + '">File to upl
var fieldCount = 0;
function addField() {
var name = 'file' + fieldCount;
var row = 'row' + fieldCount;
var str = '<p id="' + row + '"><label for="' + name + '">File to upload: <input type="file" name="' + name + '" id="' + name + '" />(100MB max size) <a onclick="removeRow(' + row + '); return false;">[-]</a></label></p>';
fieldCount++;
$("#fields").append(str);
};
function removeRow(id) {
$(id).remove();
};
var fieldCount=0;
函数addField(){
变量名称='文件'+字段计数;
变量行='行'+字段计数;
var str='要上载的文件:(最大大小为100MB)[-]
';
fieldCount++;
$(“#字段”).append(str);
};
函数(id){
$(id).remove();
};
以下是标记:
<form id="ajaxUploadForm" action="<%= Url.Action("AjaxUpload", "Upload")%>" method="post" enctype="multipart/form-data">
<fieldset id="uploadFields">
<legend>Upload a file</legend>
<div id="fields"></div>
<input id="ajaxUploadButton" type="submit" value="Submit" />
</fieldset>
<a onclick="addField(); return false;" id="add">Add</a>
<div id="resultBox">
<p id="status" style="margin:10px;"></p>
</div>
</form>
上传文件
添加
addFields
按预期工作,但当我单击删除链接时,firebug告诉我没有定义行#
,其中#
是任意数量的添加字段
任何帮助都将不胜感激 因为它是一个字符串,所以需要在其周围加引号。 您还需要使用“#”将其设置为选择器:
var str = '... <a onclick="removeRow(\'#' + row + '\'); return false;">...';
'<a onclick="removeRow(\'#' + row + '\'); return false;">'
您需要为ID选择器(
#
ID
)传递一个有效的选择器表达式,或者在removeRow
调用中传递(还请注意围绕ID选择器的引号):
您正在传入第12行的字符串值,但选择器应为:
$('#'+row).remove()
#
指定您正在查找ID
。我同意我认为的另一个答案将要说的,您应该使用onclick
events naturalthis
关键字:
<p onclick="remove(this)">something</p>
function remove(what) {
$(what).remove()
}
然后,您只需指定该行是可移动的,根本不必担心绑定事件:
<p><a class="removableRow" href="#">Remove</a></p>
至少我自己的答案是正确的——只是没有及时输入。:)啊,我肯定忘了。谢谢我喜欢这种回应,因为它似乎更符合低调JavaScript的精神。尽管这两种解决方案都是在静态HTML之外编写脚本,但ops解决方案使用内联JavaScript呈现HTML,而您的解决方案实际上是与HTML分离的。。。按钮,它将删除该行。有没有一种方法可以只接受来自锚定标记的点击?我修改了我的示例以显示锚定标记。
<p onclick="remove(this)">something</p>
function remove(what) {
$(what).remove()
}
$('.removableRow').live('click', function() {$(this).remove()});
<p><a class="removableRow" href="#">Remove</a></p>