2012-07-16 184 views
2

我有以下腳本爲縮略圖圖像查看器。我已經分別以thumb和large命名了每個縮略圖圖像和較大的父圖像。該腳本通過更改文件路徑來替換大圖像,同時單擊任何縮略圖圖像。防止jquery瀏覽器滾動到頂部點擊

<script> 
$('.thumbs').delegate('img','click', function(){ 
    $('.large').attr('src',$(this).attr('src').replace('thumb','large')); 
    $('.large').hide().fadeIn(500); 
}); 
</script> 

每次單擊縮略圖時,頁面會滾動回頂端。我試圖防止這與

return false; 

它的工作,但是,然後,大圖像將不會更新。是否有另一種方法來防止頁面滾動到頂部?

感謝您的幫助。

回答

2

的頁面不滾動到頁面的頂部,它滾動到大圖像的頂部,因爲你改變形象資源。

您可以嘗試禁用並隱藏和淡入效果,並查看問題是否仍然存在。

如果問題仍然存在,只需添加解決問題的以下代碼即可。

<script> 
$('.thumbs').delegate('img','click', function(){ 
    var y = window.pageYOffset; 
    $('.large').attr('src',$(this).attr('src').replace('thumb','large')); 
    $('.large').hide().fadeIn(500); 
    window.scrollTo(0, y) 
}); 
</script> 

對不起任何英文錯誤。我在用谷歌翻譯。

+0

太棒了!謝謝!完美工作。 – chasemb 2012-07-16 18:31:00

1

你究竟在哪裏放置了返回錯誤?如果你在最後做到了,它應該已經奏效了。就像這樣:

<script> 
$('.thumbs').delegate('img','click', function(){ 
    $('.large').attr('src',$(this).attr('src').replace('thumb','large')); 
    $('.large').hide().fadeIn(500); 
    return false; 
}); 
</script> 

您還可以使用e.preventDefault()停止默認鏈接動作:

<script> 
    $('.thumbs').delegate('img','click', function(e){ 
     $('.large').attr('src',$(this).attr('src').replace('thumb','large')); 
     $('.large').hide().fadeIn(500); 
     e.preventDefault(); 
     return false; 
    }); 
</script> 
3

我似乎並沒有做,在IE9。儘量防止默認動作:

<script> 
$('.thumbs').delegate('img','click', function(event){ 
    $('.large').attr('src',$(this).attr('src').replace('thumb','large')); 
    $('.large').hide().fadeIn(500); 
    event.preventDefault(); 
}); 
</script> 
+0

我正在使用chrome。我也嘗試過,但沒有奏效。我使用了Victor的解決方案,它的工作非常完美。 – chasemb 2012-07-16 18:30:26

1

這是因爲當您更換大圖片src,它自敗了片刻,頁面變得越來越小並且不再需要滾動,以便上去。嘗試縮放頁面,然後你會看到它沒有發生(Ctrl +鼠標向上滾動)。

只要把你帶補丁大小DIV不改變大的圖像:

<div style="height: 490px; width: 490px;float: left;"> 
    <img style="display: block;" class="large" src="images/06_large.png"> 
</div> 
相關問題