javascript - 如何通过单击另一个 block 在可见窗口中显示 block

标签 javascript jquery html css

请有人帮我解决这个问题。请在下面找到 fiddle 链接,以便您了解实际需求。

$(document).ready(function(){
  $('a.n-stand-b, a.n-stand-a, a.e-stand-b, a.e-stand-a, a.w-stand-b, a.w-stand-a, a.s-stand-b, a.s-stand-a').click(function()      {
    $('[class*="b-"]').removeClass(function(index, className) {
      return (className.match(/(^|\s)b-\S+/g) || []).join(' ');
    });
    var stand_class= $(this).attr('class');
    $('div.'+stand_class).hide().prependTo('.container-right-column .container-right').slideDown(1000);
    $('div.'+stand_class).addClass('b-'+stand_class);
  });
});

https://jsfiddle.net/oz2k1xav/2/

现在,当我单击左侧体育场的任何 block 时,相应地在右侧列中,它会在右侧容器的顶部向下滑动。

在向下滚动页面后,我将左侧容器位置固定,右侧容器可滚动。并点击任何体育场 block ,右侧的容器 block 仅显示在容器顶部。

但我真正想要的是,当我向下滚动然后单击左侧的容器体育场 block 时,右侧的容器 block 应该显示在可见窗口中,而不是右侧容器的顶部。

请有人帮助我,这真的很需要......请告诉我。

谢谢

最佳答案

您提供的解决方案将所需元素添加到容器中,这就是它始终位于顶部的原因。您需要的是滚动到所需的元素,

我添加了一个 jquery plugin(scrollTo)在下面的 jsfiddle 中,它完成了这项工作

https://jsfiddle.net/oz2k1xav/3/

这些是修改过的行

    //$('div.'+stand_class).hide().prependTo('.container-right-column .container-right').slideDown(1000);

    $.scrollTo($('div.'+stand_class)[0], 1000, {
    offset: -100
    });

关于javascript - 如何通过单击另一个 block 在可见窗口中显示 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37407543/

相关文章:

javascript - 将可编辑的文本框添加到图表中的特定数据点

javascript - [].map.call() VS Array.prototype.map.call()?

javascript - 从数组中的对象中查找键的值 - Javascript

html - 列中的九个 div。这个怎么设计?

javascript - 使用 javascript 删除 <pre> 中的空行?

javascript - Jquery - 首次使用后初始化选择框

javascript - 防止 QWebView 中的表单重新加载

javascript - 使用javascript自动计算

javascript - 仅 div 内的动画

html - HTML 中的链接图像(包装链接和内部链接)不会是 'link'