scrollTo只适用于第一个链接

时间:2012-07-12 14:05:50

标签: php jquery scroll

我有这行代码,当用户点击链接时,页面应向下滚动到相应的锚点。

原来它只适用于第一个链接。其他人只是解雇了这个例外

Uncaught TypeError: Cannot read property 'slice' of undefined 

这是代码

的jQuery

$(document).on('click','#scrollTo',function(){

                var to = $(this).attr('class');
                //alert(to);
                //This allways print the correct class name

                $(window).scrollTo('div #'+to,'1000');


            });

PHP

<ul id="source">
            <?php 
            $sourceRCS = $source->getAllSources();
            foreach($sourceRCS as $src)
            {
                echo '<li data-value="'.$src->name.'"><a href="#" id="scrollTo" class="'.$src->name.'">'.$src->name.'</a></li></a>';
            }

            ?>
    </ul>
foreach($sourceRCS as $src)
{


       echo '
    <div class="custom-label-src">
         <div id="'.$src->name.'" class="span12 label-title-src">
            '.$src->name.'
         </div>
    </div>';

}

我做错了什么?

提前谢谢

3 个答案:

答案 0 :(得分:1)

ID应该是唯一的,但是你重复#scrollTo。尝试使用CSS类作为目标。

答案 1 :(得分:0)

var to = $(this).attr('class');
$(window).scrollTo('div #'+to,'1000');

您正在选择一个类并将其指定为“to”。然后你拿上课并将它转换成下一行的ID。

你的选择器应该是这样的:

var to = $(this).attr('class');
$(window).scrollTo('div .' + to,'1000');

答案 2 :(得分:0)

Html Id必须是唯一的。像之前建议的那样,尝试使用类。此外,尝试捕获事件目标并滚动到它:

$(document).click(function(evt){
   var target = evt.target;
   $(window).scrollTo(target, 1000);
});

但是,这会滚动到用户点击的所有内容。更好的解决方案是仅在要滚动到的锚标记上设置单击事件处理程序:

$("#source a").click(function(evt){
   evt.preventDefault();
   var target = $(evt.currentTarget);
   $(window).scrollTo(target, 1000);
   // More code here...
});