2011-10-25 45 views
0

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

發佈一些比較完整的HTML會很有幫助。 – Jasper

+0

附加信息:與我的問題中列出的行表嵌套在另一個表 – joshuahedlund

回答

2

如果文字輸入和它的標題(<p>標籤內的文本)是僅有的兩個在一行中,你可以使用選擇喜歡的其中之一:

$('.required').parents('tr:first').find('p').addClass('form_error'); 

$('.required').closest('tr').find('p').addClass('form_error'); 

這裏是上面的的jsfiddle解決方案:http://jsfiddle.net/Lyaqp/2/

+0

這有效,謝謝。 – joshuahedlund

相關問題