Jquery选择上一课

时间:2013-08-02 10:23:39

标签: jquery

我已经尝试过这样的事情,许多其他变种就像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就是为了表明应该发生的事情....

非常感谢您的时间和帮助!

3 个答案:

答案 0 :(得分:3)

你需要尝试

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

演示:Fiddle

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