我有两个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");
答案 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