2015-05-21 24 views
3

我在我的网站上使用了scrollTop的锚点。然而,我想在包含该链接的橙色框上应用scrollTop,而不仅仅是在文本上,以帮助可能不会点击确切位置的用户。在parentNode上应用scrolltop

我已经尝试使用:

$('a[href^="#"]').parentNode.click(function() 

OR

$('a[href^="#"]').previousSibling.click(function() 

然而,他们没有缝工作...感谢您的帮助。

$('a[href^="#"]').click(function(){ 
 
    var the_id = $(this).attr("href"), 
 
     yPos = $(the_id).offset().top, 
 
     speed = 1500; 
 

 
    $('html, body').animate({ 
 
     scrollTop: yPos -71  // -71px pour prendre en compte la taille du bandeau supérieur. 
 
    }, speed); 
 
    return false; 
 
});
.hcb_link { 
 
    background: #D5420F; 
 
    text-align: center; 
 
    width: 300px; 
 
    font-size: 18px; 
 
    padding: 10px 0px; 
 
    margin: 10px auto 30px; 
 
    border-radius: 2px; 
 
    cursor: pointer; 
 
    color: white; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="carrousel"> 
 
    <div class="row"> 
 
     <div class="col-sm-4 col-sm-offset-2"> 
 
      <div class="row"> 
 
       <div class="col-sm-9 col-sm-offset-2 hcb_link"> 
 
        <a href="#ancreProfessionnel">Vous êtes un professionnel</a> 
 
       </div> 
 
      </div> 
 
     </div> 
 
     <div class="col-sm-4"> 
 
      <div class="row"> 
 
       <div class="col-sm-9 col-sm-offset-1 hcb_link"> 
 
        <a href="#ancreEtudiant">Vous êtes un étudiant</a> 
 
       </div> 
 
      </div> 
 
     </div> 
 
    </div> 
 
</div> 
 
<div id="ancreProfessionnel" class="hss_container light_background" style="min-height:520px;"> 
 
    <div class="max_width"> 
 

 
     <div class="hssc_title"><span class="third_color">Entrepreneurs</span>, démultipliez votre force commerciale grâce à des étudiants rémunérés au succès 
 
     </div> 
 

 
    </div> 
 
</div> 
 

 
<div id="ancreEtudiant" class="hss_container dark_background" style="min-height:490px; border-bottom: 1px solid white;"> 
 
    <div class="max_width"> 
 

 
     <div class="hssc_title"><span class="fourth_color">Étudiants des Grandes Écoles</span>, mettez vos compétences et votre énergie à profit 
 
     </div> 
 

 
    </div> 
 
</div>  
 
    
 
<div id="ancreEtudiant" class="hss_container dark_background" style="min-height:490px; border-bottom: 1px solid white;"> 
 
    <div class="max_width"> 
 

 
    <div class="hssc_title"><span class="fourth_color">Étudiants des Grandes Écoles</span>, mettez vos compétences et votre énergie à profit 
 
    </div> 
 

 
    </div> 
 
</div>

回答

1

我不知道,如果你可以声明一个监听器是这样的。您选择家长的功能根本不正确。

您应该直接适用听者箱:$('.hcb_link').click(function()有:

var the_id = $(this).find('a').attr("href"), 

parent()将是正确的功能选择父元素。

####################

如果你想减少你的代码,我会建议摆脱a元素。

你可以把它像这样加快速度:

<div class="col-sm-9 col-sm-offset-2 hcb_link" data-scroll="ancreProfessionnel"> 
    Vous êtes un professionnel 
</div> 

有:

$('.hcb_link').click(function(){ 
    var the_id = $(this).data('scroll'), 
    yPos = $(the_id).offset().top, 
    speed = 1500; 

    $('html, body').animate({ 
    scrollTop: yPos -71  // -71px pour prendre en compte la taille du bandeau supérieur. 
    }, speed); 
} 

亲切的问候

+0

它似乎并没有为我工作。当我插入.parent()时,scrollTop停止运行。超链接正常应用锚点效果。 – Francky

+0

对不起。你是对的。我忘了你希望用户能够点击该框的部分。您应该将侦听器直接应用于该框。在这种情况下,“hcb_link”。根本不需要链接。我会更新我的回答 –

+0

好的:)。所以它应该看起来像这样: $('。hcb_link')。click(function(){var this_id = $(this).attr(“href”), yPos = $(the_id).offset() 。.TOP, 速度= 1500; $( 'HTML,身体')动画({ scrollTop的:yPos -71 // -71px倾prendre连接孔特拉taille杜发带Superieur的 },速度); 返回假; }); – Francky