繁体   English   中英

在元素的父级的先前同级上切换类

[英]Toggle class on an element's parent's previous sibling

单击某些元素时,我想在该元素的父级上一个同级(不是全部,只有一个)上切换一个类,而该同级还没有特定的类(“ item”)。

HTML:

<tr id="product1">
    <td>Product</td>
    <td>Text</td>
</tr>
<tr class="item" id="sku1">
    <td>SKU</td>
    <td class="valueButton">Button</td>
    <td>Text</td>
</tr>
<tr id="product2">
    <td>Product</td>
    <td>Text</td>
</tr>
<tr class="item" id="sku2">
    <td>SKU</td>
    <td class="valueButton">Button</td>
    <td>Text</td>
</tr>
<tr class="item" id="sku3">
    <td>SKU</td>
    <td class="valueButton">Button</td>
    <td>Text</td>
</tr>

JS:

$(document).on({
    click: function () {
        $('tr', $(this).parent().prev(":not('.item')")).toggleClass('blueChecked');
    }
}, "tr.item td:not('.valueButton')");

使用.prevAll()并保留第一个。

$(this).parent().prevAll(':not(.item)').first().toggleClass('blueChecked');

prev只使用检查立即前面的元素。 如果选择器与之匹配,则针对该一个选择器进行测试。

演示在http://jsfiddle.net/UtJPS/

我认为这可以做到:

$('table').on('click', 'td', function () {
    var $tr = $(this).closest('tr');
    var $last = $tr.siblings()
        .filter(':not(.item)')
        .filter(':lt('+ $tr.index() + ')')
        .last();
    if ($last.length) {
        $last.toggleClass('blueChecked');
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM