2010-11-23 68 views
0

我有一个包含(惊喜!)文章的元素。自动滚动到跨度元素

页面顶部有一列标签,可以在文章中找到。 当用户点击标签时,它会突出显示文章中的任何匹配词。

我遇到问题然后自动滚动到突出显示的单词。

有没有办法用javascript/jQuery做到这一点?

下面是我的代码查找的单词,并突出显示:

$(".article-tags a.toggle").live("click", function() { 
     var $this = $(this); 
     var $p = $this.closest("p"); 
     if ($p.find("span.highlight").length == 0) { 
      $("#viewer .article-body").highlight($this.text()); 
      $this.highlight($this.text()); 
      document.getElementById("viewer").scrollTop = $p.find("span.highlight").offsetTop; 
     } 
     else { 
      $("#viewer .article-body").removeHighlight(); 
      $p.removeHighlight(); 
     } 
     return false; 
    }); 

感谢。

+0

它是否在第一个地方工作?我看到这卷轴,所以我可以假设它不起作用? – Blender 2010-11-23 16:15:44

回答

4

几种方法来实现。

  • jQuerys .animate()scrollTop设置为elements.offset().top
  • $(window).scrollTop(element.offset().top);
  • element.scrollIntoView();

.scrollIntoView()是您可以在DOM节点上直接调用本地方法。

0
$('span.highlight').first().prepend('<a class="highlighted" name="hightlighted" />'); 
window.location.hash = '#highlighted'; 

这应该做到这一点。您要在元素之前添加一个锚点,然后滚动到它。在此之前,您可能需要输入$('a.highlighted').remove()以清除以前的任何添加项。