我是jQuery的新手,想知道在两种不同的DOM场景下是否有一种优雅的方式来选择标签。如果输入值为空,我正在使用jQuery来验证表单并将一个错误类添加到段落标记(粗体显示文本并用红色突出显示)。一些段落和输入标签存在于DOM中,如下所示:
<td><p>Name:</p></td><td><input type="text" name="field_name"></td>
虽然其他人存在如下:
<td><p>Name:</p><input type="text" name="field_name"></td>
到目前为止,我的jQuery函数如下所示:
$("#form_id").submit(function() {
var answer = true;
$(this).find(".required").map(function() {
if(!$(this).val()) {
$(this).closest("td").prev("td").find("p").addClass("form_error");
answer = false;
}
else {
$(this).closest("td").prev("td").find("p").removeClass("form_error");
}
});
return answer;
});
关键是:
$(this).closest("td").prev("td").find("p").addClass("form_error");
在我的第一个DOM场景下,这是p标签的明确选择,但当然在第二个场景中失败了。我正在寻找一行代码,在两种情况下都会选择p标签。我一直在玩.prev("p")
,但到目前为止还没有弄清楚。有没有办法做到这一点?
答案 0 :(得分:2)
如果文本输入及其标题(<p>
标签内的文本)是一行中的唯一两个,您可以使用选择器,如下所示:
$('.required').parents('tr:first').find('p').addClass('form_error');
$('.required').closest('tr').find('p').addClass('form_error');
以上是上述解决方案的一个方面:http://jsfiddle.net/Lyaqp/2/