2015-10-05 72 views
1

我有一些隐藏的部分,单击箭头时会展开。箭头曾经是主要“questionBlock”div的一部分,因此我们使用$content = $arrow.siblings(.questionBlockExpand)来选择要展开的部分。但是现在有了一些所需的布局更改,箭头现在分开在另一个名为“questionBlockTitle”的div中。在父母的两个级别上面选择一个div?

我无法选择现在在父div 2级别内的“questionBlockExpand”。

下面的JQuery代码是我尝试通过第二父级选择div的其中一个。

我在做什么错?

谢谢。

HTML:

<div class='questionBlock testing123 '> 
    <div class='questionBlockTitle'><span class='sectionQuestionBlockNumber'>1</span><span class='sectionQuestionBlockTitle'>title text</span> 
     <div class='expandArrow downArrow'>Expand Arrow Image</div> 
    </div> 
    <div class='questionBlockExpand'>Section to expand</div> 
</div> 

JQuery的:

$(".expandArrow").click(function() { 

$arrow = $(this); 
$content = $arrow.parent().parent(".questionBlockExpand"); 
//open up the content needed - toggle the slide- if visible, slide up, if not slidedown. 
$content.slideToggle(500, function() { 
    //execute this after slideToggle is done 
    //change class of header based on visibility of content div 
    if ($content.is(":visible")) { 
     $arrow.addClass("upArrowBlock"); 
     $arrow.removeClass("downArrowBlock"); 
    } else { 
     $arrow.addClass("downArrowBlock"); 
     $arrow.removeClass("upArrowBlock"); 
    } 
}); 

});

+0

'$内容= $ arrow.closest( '.questionBlock').find(“。questionBlockExpand”);' – Satpal

回答

1

您可以使用closest()遍历高达容器questionBlock div的使用find()

$content = $arrow.closest('.questionBlock ').find(".questionBlockExpand"); 

OR,

$content = $arrow.closest('.questionBlockTitle').next(".questionBlockExpand"); 
//$content = $arrow.parent().next(".questionBlockExpand"); 

OR

$content = $arrow.closest('.questionBlockTitle').siblings(".questionBlockExpand"); 
//$content = $arrow.parent().siblings(".questionBlockExpand"); 
+0

我试过使用.nex t()来实现这一点,但那并不奏效。我会尽量靠近,但不知道这是否是最佳做法。由于页面上会有多个这样的部分,因此不确定它是如何选择最接近的。 – user2924019

+0

你的编辑与父母(),兄弟姐妹突然有道理! – user2924019

+0

尝试与父母(),兄弟姐妹,它的工作正是我如何尝试。但是你似乎是在你的答案中编辑了这一个。 – user2924019