2016-03-21 87 views
-2

我有以下结构。使用jquery从子节点的目标父节点

<dl> 
    <dt class="tab">..</dt> 
    <dd class="tab-container">..</dd> 
    <dt class="tab"> 
     <div class="hi">hello</div> 
    </dt> 
    <dd class="tab-container">...</dd> 
    <dt class="tab">...</dt> 
    <dd class="tab-container">...</dd> 
</dl> 

我想添加新的类到最后dd元素点击“嗨”div .how我可以实现使用jQuery。

+0

你到目前为止试过了哪些代码? – shamsup

+0

stackoverflow是用于解决**现有的**代码和没有* giv-me-the-codez *网站的问题。 – cramopy

回答

1

尝试学习遍历。回答你的问题[在评论中提问]

$(this).parents('dl').prev().closest('ul').children('li').eq(-2).addClass('new classs'); 
3

可以为closest()用它来获得相关dd祖先然后瞄准最后dl

$('div.hi').on('click', function(){ 
    $(this).closest('dl').children('dd:last-child').addClass('myNewClass'); 
}); 
+0

如何瞄准第二个最后的dd? – user5962477

+0

@ user5962477使用具有负数索引的'eq()':'$(this).closest('dl')。children('dd')。eq(-2)' –

+0

thanks.one more questions .how can i target其他不属于

标签的元素。 – user5962477

1

这听起来像你想是这样的:

$(".hi").click(function() { 
    $(this).closest("dl").find("dd:last-child").addClass("blue"); 
}); 

例子:https://jsfiddle.net/z24toqL2/

0

一种方法是使用jQuery.parents遍历DOM树,直到找到dl元素。

$('.hi').on('click', function() { 
    $(this).parents('dl').find('dd:last').addClass('my-new-class'); 
}); 

这里是jQuery的API documentation category对DOM树的遍历 - 不止一种方法去做一件事。

1

你好:)你可以使用父母()或父母() - documentation for parents()

所以,试试这个:

$('.hi').on('click', function() { 
    // In that case- parents('dl') - try to catch a dl parent 
    $(this).parents('dl').find('dd:last-of-type').addClass('new-class'); 
}); 

你可以view online here in jsfiddle