Javascript 未定义元素jQuery$(Element).remove()

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

我有一个添加表单字段的JavaScript,以及删除该字段的链接:

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 natural
this
关键字:

<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>