JQuery 滚动到一个元素只工作一次

0 人关注

我正在做一个网站,我通过父页上的幻灯片显示我的子页。在每个子页面上,我有一个向下滚动的链接,可以滚动到图像上方的第一个标题。然而,当我链接到标题元素时,它只对显示的第一个子页面起作用,而对其他页面不起作用。我试着用一个值来替换这个元素,当这样做的时候,它在我所有的页面上都能工作,所以这不是由于滚动功能造成的。我试着用一个类来改变目标元素的ID,因为我是通过一个循环来显示我的页面的,所以我认为ID可能是问题所在,但它仍然不工作。有没有人知道这里发生了什么?下面是我的代码。

    $('.scroll-down').click (function scroll() {
        $(".slider").scrollTo($('h3.title') ,800);

HTML/PHP。

foreach ($children as $post){
$thumbnailid=get_post_thumbnail_id($post);
$postthumbnail= wp_get_attachment_image_src($thumbnailid,'full-size');
  setup_postdata($post);
  <div class = mySlides>
    <a class="scroll-down"></a>  
    <img src="<?php echo $postthumbnail[0];?>">
    <h3 class="title"><?php echo ($post->post_title);?></h3>
    <?php the_content($post);?>
  </div> 

我设法使它在所有的页面上工作了一次,但在做完其他事情后,它就不再工作了,而且我没有修改js行。我希望有人能给我指明方向,以解决这个问题!谢谢你!"。

javascript
php
jquery
html
wordpress
Flo Barth
Flo Barth
发布于 2020-01-20
2 个回答
Ali Qorbani
Ali Qorbani
发布于 2020-01-20
0 人赞同

很快,这是因为你的js选择器。当你使用 $('h3.title') 作为选择器时,它会从你的代码顶部扫描并获得第一个。

为此,你可以使用类似下面的代码。

 $('.scroll-down').click (function scroll() {
     var nextTitle = $(this).parent().find('h3.title');
     $(".slider").scrollTo(nextTitle) ,800);

注意:我没有在真实的网站上检查过,让我知道它是否有效。

谢谢你的答复,但不幸的是,它并不工作,甚至停止了第一个工作。也许我输入错误?在你发送的内容中似乎漏掉了一个)。
删除 .prev() ,请再试一次
太感谢你了,阿里!你真了不起!现在工作得很完美 :)
Mehrnoosh
Mehrnoosh
发布于 2020-01-20
0 人赞同

你需要找到下一个标题,所以你应该写这样的东西。

$('.scroll-down').click(function(e) {
  e.preventDefault();
  var $nextTitle = $(e.currentTarget).parent().next().find('h3.title');