-2

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

原来它只适用于第一个链接。其他人只是触发这个异常

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>';

}

我究竟做错了什么?

先感谢您

4

3 回答 3

1

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

于 2012-07-12T14:08:10.440 回答
0
var to = $(this).attr('class');
$(window).scrollTo('div #'+to,'1000');

您正在选择一个类并将其分配给“to”。然后,您上课并将其转换为下一行中的 ID。

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

var to = $(this).attr('class');
$(window).scrollTo('div .' + to,'1000');
于 2012-07-12T14:09:28.337 回答
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...
});
于 2012-07-12T14:51:14.350 回答