2013-08-02 47 views
-1

從來就具有這樣的事情,許多其他變種像2小時試過......對SO看了很多線程,但couldn't找到了我正在尋找...jQuery的選擇上一個類

伊夫得到了這樣的結構:JSFIDDLE

<tr><td></td><td><select name="startTime[]" class="startTime"></select></td></tr> 
<tr><td></td><td><select name="endTime[]" class="endTime"></select></td></tr> 
<tr><td></td><td><select name="startTime[]" class="startTime"></select></td></tr> 
<tr><td></td><td><select name="endTime[]" class="endTime"></select></td></tr> 
<tr><td></td><td><select name="startTime[]" class="startTime"></select></td></tr> 
<tr><td></td><td><select name="endTime[]" class="endTime"></select></td></tr> 
<tr><td></td><td><select name="startTime[]" class="startTime"></select></td></tr> 
<tr><td></td><td><select name="endTime[]" class="endTime"></select></td></tr> 

      <script> 
      $(".endTime").change(function() { 

       $(this).prevUntil('.startTime:first').addClass('pink'); 
       //$(this).prev(".startTime").addClass('pink'); 
//$('.endTime').prev('.startTime').addClass('pink'); 
       //$(this).prevAll('.startTime:first'); 

      }); 
      </script> 
      <style> 
       .pink{background-color: pink;} 
      </style> 

但我不能弄清楚如何做到這一點...把一些代碼,我不需額外的工作,從來就嘗試了很多組合.. ..

我想要什麼:最後,我想從字段結束時間和開始時間獲得值,addCla ss只是在那裏,以表明應該發生的事情......

非常感謝您的時間和幫助!

+1

能否請你解釋一些更詳細的問題? –

+0

不會只使用$(this).parents(「。className」)工作嗎? – Fenixp

+1

你的類嵌套在幾個表格元素層中,你也必須考慮這些。 – adeneo

回答

3

你需要嘗試

$(this).closest('tr').prev().find('.startTime').addClass('pink'); 

演示:Fiddle

+0

工作......是的,我一直做錯了......謝謝你的時間。 +1並接受。 –

1

看一看什麼prevUntil()實際上做:

獲取所有前面的兄弟姐妹

你的選擇有沒有兄弟姐妹。這是封閉式<td>中唯一的孩子。你想要的是向外遍歷DOM到最近的<tr>,得到它的前一個兄弟,然後在裏面找到你的<select>

$(this) 
    .closest('tr')  // Find ancestor <tr> that is closest, ... 
    .prev()    // ... then find its predecessor... 
    .find('.startTime') // ... inside that predecessor, find the element with class `startTime` ... 
    .addClass('pink'); // ... and finally colour it. 

我覺得它變得更加清晰,如果你整理/縮進你的HTML標記有點:

<tr> 
    <td></td> 
    <td> 
     <select name="startTime[]" class="startTime"></select> 
    </td> 
</tr> 
<tr> 
    <td></td> 
    <td> 
     <select name="endTime[]" class="endTime"></select> 
    </td> 
</tr> 
+0

謝謝,+1 ...還有4 ... –