【问题标题】:How to prevent page jump when using # href to swap gallery images using a div ID?使用#href使用div ID交换画廊图像时如何防止页面跳转?
【发布时间】:2012-08-16 06:51:05
【问题描述】:

我一直在为一个问题苦苦挣扎。我使用 CSS 和 # href 制作了一个简单的 html 画廊,以从本质上换出包含画廊图像的不同 div ID。问题是,当您在图库中选择“下一个”或“上一个”按钮时,它会在浏览器中向上跳转页面,因此图库与页面顶部对齐。有人知道如何防止这种情况吗?

画廊的代码如下所示:

<div id="pic1">
<img src="click/pic1.jpg" alt="" />
<a class="previous" href="#pic10"><b>Previous</b></a><a class="next" href="#pic2"><b>Next</b></a>
</div>
<div id="pic2">
<img src="click/pic2.jpg" alt="" />
<a class="previous" href="#pic1"><b>Previous</b></a><a class="next" href="#pic3"> <b>Next</b></a>
</div>
<div id="pic3">
<img src="click/pic3.jpg" alt="" />
<a class="previous" href="#pic2"><b>Previous</b></a><a class="next" href="#pic4"><b>Next</b></a>
</div>
<div id="pic4">
<img src="click/pic4.jpg" alt="" />
<a class="previous" href="#pic3"><b>Previous</b></a><a class="next" href="#pic5">  <b>Next</b></a>
</div>
<div id="pic5">
<img src="click/pic5.jpg" alt="" />
<a class="previous" href="#pic4"><b>Previous</b></a><a class="next" href="#pic6"><b>Next</b></a>
</div>
<div id="pic6">
<img src="click/pic6.jpg" alt="" />
<a class="previous" href="#pic5"><b>Previous</b></a><a class="next" href="#pic7"><b>Next</b></a>
</div>
<div id="pic7">
<img src="click/pic7.jpg" alt="" />
<a class="previous" href="#pic6"><b>Previous</b></a><a class="next" href="#pic8"><b>Next</b></a>
</div>
<div id="pic8">
<img src="click/pic8.jpg" alt="" />
<a class="previous" href="#pic7"><b>Previous</b></a><a class="next" href="#pic9"><b>Next</b></a>
</div>
<div id="pic9">
<img src="click/pic9.jpg" alt="" />
<a class="previous" href="#pic8"><b>Previous</b></a><a class="next" href="#pic10"><b>Next</b></a>
</div>
<div id="pic10">
<img src="click/pic10.jpg" alt="" />
<a class="previous" href="#pic9"><b>Previous</b></a><a class="next" href="#pic1">  <b>Next</b></a>
</div>

任何帮助将不胜感激!

【问题讨论】:

    标签: css html hash gallery href


    【解决方案1】:

    不是链接到#,而是链接到javascript:void(0);

    <a class="previous" href="javascript:void(0);">Next</a>
    

    或者,使用 Javascript 阻止默认事件

    $("a.previous, a.next").on("click", function(e) {
       e.preventDefault();
    });
    

    【讨论】:

    • 感谢您的快速回复!如果我使用 javascript:void 方法,浏览器如何知道加载下一个/上一个 Div ID?
    • 我已经尝试了上述两个建议,但似乎都不适合我。第一个解决方案根本没有告诉画廊转到下一张“幻灯片”,第二个似乎没有什么不同(我使用了包装在文本类型中的 html 页面头部的 java 代码javascript 标签,有什么想法吗?!!谢谢!
    • 这两行都没有告诉它转到下一张幻灯片,它们只是告诉页面不要向上滚动。如果您在转到下一张幻灯片时需要一些帮助,请将您的完整页面发布到 JSFiddle 中。
    【解决方案2】:

    设置后需要使用JQuery

    <a class="previous" href="javascript:void(0);">Next</a>
    

    然后调用JS:

    $(document).ready(function(){
    
        $('a.previous').click(function(e){
            var picID= parseInt($(this).parent().attr("id").substr(3));//gets the pic id count
            $("#pic"+(picID)).hide(); //hide the current div
            $("#pic"+(picID-1)).show(); //show the previous div
        });
    
        $('a.next').click(function(e){
            var picID= parseInt($(this).parent().attr("id").substr(3)); //gets the pic id count
            $("#pic"+(picID)).hide(); //hide the current div
            $("#pic"+(picID+1)).show(); //show the previous div
        });
    
    });
    

    见:http://jsfiddle.net/uZ6g5/

    【讨论】:

    • 非常感谢您的回复,不幸的是我仍然有点挣扎。通常我会在文档的开头声明我的java,我不完全确定之后如何“调用”那个javascript?我假设我会将java保存在一个单独的java文件中?提前感谢您的帮助!
    • 现在可以使用:jsfiddle.net/uZ6g5/3 但是我应该在我的 html 页面上的哪个位置放置代码的 Java 部分?谢谢!!
    • 感谢大家的帮助!
    • 可以参考jQuery教程Getting Started with jQuery
    猜你喜欢
    • 2012-04-28
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 2011-02-19
    • 2013-06-16
    • 1970-01-01
    相关资源
    最近更新 更多