-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

HTMLIDは一意である必要があります。以前に提案したように、代わりにクラスを使用してみてください。また、イベントターゲットをキャプチャして、それにスクロールしてみてください。

$(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 に答える
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 に答える