在多个方案下选择上一个段落标记

时间:2011-10-25 19:00:32

标签: jquery

我是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"),但到目前为止还没有弄清楚。有没有办法做到这一点?

1 个答案:

答案 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/