2012-07-12 55 views
-2

我有這樣的代碼行,當用戶點擊鏈接時,頁面應該向下滾動到相應的錨點。scrollTo只適用於第一個鏈接

原來,它只適用於第一個鏈接。其他人剛剛火這個異常

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

} 

我在做什麼錯?

預先感謝您

回答

1

的ID都應該是獨一無二的,但你重複#scrollTo。請嘗試使用CSS類作爲您的目標。

+0

仍然是相同的行爲。將代碼更改爲這個$(document).on('click','。scrollTo',function(){var 0 1 = 0 $(window).scrollTo('div#'+ to,'1000'); });'移除鏈接的類屬性,但只有第一個鏈接滾動。 – 2012-07-12 14:13:23

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

您正在選擇一個班級並將其分配給「到」。然後,您將該課程轉換爲下一行中的ID。

你的選擇應該是這樣的:

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

我沒有轉換任何東西。我只是在使用該課程的內容 – 2012-07-12 14:12:32

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... 
}); 
相關問題