2011-10-08 40 views
2

点击链接Click Me后,页面滚动回顶端。我不想要这个。如何解决它?单击后是否阻止页面滚动?

例子:http://jsfiddle.net/Y6Y3Z/

滚动条:

enter image description here

function myalert() { 
     var result = true; 
     //var hide = $('.alert').fadeOut(100); 
     //var css = $('#appriseOverlay').css('display','none'); 
     var $alertDiv = $('<div class="alert">Are you sure you want to delete this item?<div class="clear"></div><button class="ok">no</button><button class="cancel">yes</button></div>'); 
     var link = this; 
     $('body').append($alertDiv); 
     $('.ok').click(function() { 
      $('.alert').fadeOut(100); 
      $('#appriseOverlay').css('display', 'none'); 
      callback(true, link); 
     }); 
     $('.cancel').click(function() { 
      $('.alert').fadeOut(100); 
      $('#appriseOverlay').css('display', 'none'); 
      callback(false, link); 
     }); 
     $alertDiv.fadeIn(100); 
     $('#appriseOverlay').css('display', 'block'); 
     return result; 
    }; 
$('.click').click(myalert); 
    function callback(result, link) { 
     // 
     if(result){ 
     } 
    } 

回答

8

,这是要在页面顶部的原因是因为你的锚标记有井号作为href。哈希语法允许您引用文档中的命名锚点,并通过链接将您带到文档中的该位置。点击它时的锚点标记的默认动作和href引用不存在的命名锚点的动作是转到页面的顶部。为防止这种情况,通过从处理程序返回false或在事件中使用preventDefault来取消默认操作。

function myalert(e) { 
    e.preventDefault(); // <-- prevent the default action 

    ... 

    return false; // <-- alternative way to prevent the default action. 
}; 
+0

不行'preventDefault'。我该怎么办? –

+0

@EmmyCharles - 更新我的示例 – tvanfosson

+1

除非您打算停止事件冒泡,否则不应使用'return false;'。请参阅@rodneyrehm的解答。 – Sparky

4

你只需要改变 “#” 改为 “的javascript:无效(0)” 关于HTML代码:

<a href="javascript:void(0)" class="click">Click Me</a> 

另一种解决方案是添加一个 “/” 后的 “#”:在我的代码

<a href="#/" class="click">Click Me</a> 
+2

OMG我爱你。那/东西摇滚!我刚刚告诉其他5位开发人员和Gilberto,你现在有3家开发公司亲吻你的脚^^ –

+0

或者你可以简单地从那里删除href属性。两者都会工作 –