0

我正在尝试使用 jQuery 删除动态创建的元素。

这是我的例子:http: //jsfiddle.net/4uxbu/

当您单击提交时,它会突出显示必填字段并This field is required.在输入后显示文本。当用户单击输入时,红色框消失,我希望输入下方的文本也消失。

使用以下代码设置消息:

$('#' + required[i]).after('<p style="font-weight:bold;" id="' + required[i] + '_error">' + emptyerror + '</p>');

我试图用以下方法删除它:

$('p#' + required[i] + '_error').remove();

但我无法让它正常工作。

Required如下

required = ["vidHeight", "title", "vidWidth", "vidLen", "thumb", "file"];

请参阅小提琴以获取完整代码。

谢谢

4

3 回答 3

3
$('p#' + required[i] + '_error').remove();

好吧, required[i] 没有任何意义,因为您不再处于定义 i 的循环中。试试这个:

$('#' + $(this).attr("id") + '_error').remove();

见:http: //jsfiddle.net/4uxbu/1/

编辑

更新处理多次提交错误时显示多个错误的情况:http: //jsfiddle.net/4uxbu/2/

于 2012-08-20T14:22:41.733 回答
0

我不会存储名称,而是存储错误消息的数组。如果您保留要添加的实际项目的数组,那么您将减少 DOM 查询的数量并有一种简单的方法来解决它们。您甚至可以创建一个将控件与消息相关联的对象。

于 2012-08-20T14:23:01.290 回答
0

[i] 不在 for 循环中时没有影响,所以我建议更改以下内容:

$(this).removeClass("needsfilled");
$('#' + required[i] + '_error').remove();

更像是:

$(this).removeClass("needsfilled").next('#'+$(this).attr('id')+'_error').remove();
于 2012-08-20T14:26:05.413 回答