我已经尝试过这样的事情,许多其他变种就像2个小时......在SO上阅读很多线程但却找不到我在寻找的东西......
我有一个这样的结构: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>
但是我无法弄清楚如何做到这一点......加入一些对我不起作用的代码,我已经尝试了很多组合....
我想要的是:最后我想从字段endtime和starttime获取值,addClass就是为了表明应该发生的事情....
非常感谢您的时间和帮助!
答案 0 :(得分:3)
答案 1 :(得分:1)
尝试以下:
$(this).closest('tr').prevAll().find('.startTime').addClass('pink');
在这里工作小提琴:http://jsfiddle.net/3APhH/2/
我希望它有所帮助。
答案 2 :(得分: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>