jQuery遍历父n级,找到兄弟,然后在那个兄弟中找到类

时间:2014-04-13 01:31:02

标签: javascript jquery html css

我有两个div,彼此相邻,每个都有几个级别的孩子。每当点击第二组div中的子项时,我需要找到一个类的最前面的实例并进行更改。 (提示,在我的高级图片中,该实例如下):

<div class="junk">
    <div>
        <div class="bCommonS bsC"></div>
        <div class="bCommonS bsN"></div>
        <div class="bCommonS bsS">I access stuff here</div>
    </div>
<div>

<div>
    <ul>
        ...
        <li>...</li>
        <li>
            <div>
                <div></div>
                <div data-category="junk">When this is clicked</div>
            </div>
        </li>
        <li>...</li>
        ...
    </ul>
</div>

现在,我只是尝试执行基本的css更改以显示我已成功访问div。

$(this).parent().eq(4).prev().find(".bsS").css("background-color", "purple");

这是一系列不起作用的蹩脚代码。我尝试过很多其他人(不使用.eq())。我已经尝试了parent(".parentClass").prev(".prevClassToParent").find(".bsS")..并尝试了许多其他演绎,但似乎无法弄清楚我如何能够访问上一次出现的类

感谢您提供的任何帮助!

*** FIX ** *

var cat = $(this).data("category");
var catBar = $("."+cat).find(".bCommonS");
var updateBarS = catBar.filter(".bsS").css("background-color", "purple");

2 个答案:

答案 0 :(得分:2)

虽然不能直接回答你的问题,但这里还是

考虑更改布局并在布局中添加一些额外的类或一些额外的data-属性,请看一下示例:

<div class='allstuff'>
    <div>
        <div class='stuff id1'></div>
        <div class='stuff id2'></div>
        <div class='stuff id3'>I access stuff here</div>
    </div>
<div>

<div>
    <ul>
        ...
        <li class='link' data-stuff='id1'>...</li>
        <li class='link' data-stuff='id2'>
            <div>
                <div></div>
                <div>When this is clicked</div>
            </div>
        </li>
        <li class='link' data-stuff='id3'>...</li>
        ...
    </ul>
</div>

这个你的选择器很简单:

    var allstuff = $('.allstuff').find('.stuff')
    $('link').on('click', function(e) {
        var id = $(this).closest('link').data('stuff')
        var stuff= allstuff.filter('.'+id).css("background-color", "purple");
    })

答案 1 :(得分:0)

如果我理解你的结构,你可以做一些简单的事情:

<强> Working Example

$('.click').click(function () {
    $('.bsS').parent().children(':last-child').css("background-color", "purple");
});

API文档:
.parent()
.children()
:last-child