2009-09-28 48 views
3

如果有人知道如何,当链接提交页面不动即页面上的链接移动提交

<a href="#"></a> 

如果是第2页长度下,将拍摄到顶部我想知道。

+0

你是什么意思“链接提交”?你在通过JavaScript做“链接提交”吗? – 2009-09-28 09:00:56

+0

当点击链接我想要一个小盒子打开undernieth它 – 2009-09-28 10:21:19

回答

0

如果您使用的是.NET 2.0

有一个在@ Page指令,你可以用它来保持页面的滚动位置的

MaintainScrollPositionOnPostback

财产。

获取或设置指示 是否后 回发的用户返回到同一位置 在客户端浏览器的值。此属性取代 过时的SmartNavigation属性。

当网页回到 服务器时,用户返回页面顶部的 。在长网页上, 这意味着用户必须将 页面滚动回页面上的最后一个位置 。

当 MaintainScrollPositionOnPostback()()() 属性设置为true,用户 而是返回到页面上的最后一个位置 。

如果您不能使用它,请在提交后将location.href设置为指定位置处的锚标记。

location.href = "#anchAtPos"; 

其中anchAtPos是指定位置上锚标记的ID。

0

我解决了这个使用:

function anchorReplace() 
{ 
    $("#reportWrapper a").each(function(i){ 
     var anchorElement = $(this); 
     var newAnchorElement = $('<a href="#link' + i + '" name="#link' + i + '">' 
      + anchorElement.text() + '</a>').insertBefore(anchorElement); 
     anchorElement.remove(); 
    }); 
} 
2

无需更换锚,作为自己的问题的答案的状态。

这将很好的工作:

<a href="#" onclick="yourOwnSubmitFunction(); return false;"> 

总之,只要你确定这个功能是在onclick处理程序返回布尔false

+0

onclick =“return yourOwnSubmitFunction();”更好。当然,它应该返回错误。 – n1313 2009-09-28 10:47:51

2

虽然链接的onclick处理程序return false;是停止链接的正确方法,但这样使用链接有点麻烦,因为你得到的是一个动作而不是链接。你不能像通常的链接一样链接到你的链接,比如右键单击书签,或者中间点击新标签等等,所以它不应该有这样的可供性​​。

另一种方法(例如,SO使用)是将onclick放在非链接元素上,例如。:

<span id="potato">Do something</span> 
<script type="text/javascript"> 
    document.getElementById('potato').onclick= function() { 
     // do something 
    }; 
</script> 

这是更清洁,但有一个缺点是,链接不能通过常用的键盘标签方法聚焦和激活。

可以说更好的是使用<input type="button"><button type="button">,这是表示动作的正确标记。当然这些看起来完全不同,但是你可以使用CSS来设计它们的样式,以便它们看起来像是一个链接而不是一个按钮,如果你喜欢的话。这种方法的一个缺点是好老的傻IE不能完全重新设置一个按钮;您将在此浏览器中获得几个不可移动的额外填充像素。

+0

这很有道理。我可能会开始使用这种方法。谢谢。 – 2014-11-06 07:41:07

0

我已经把

onclick='return false;' 

链接

<a href="#" onclick='return false;' id='attachAlistenertothisID'>This link doesn't jump to the top!</a> 

我用这对我的链接已点击听众通过jQuery连接它们内部之前修正了这个。

希望这可以帮助别人!

3

如果您已经通过的jQuery附加事件到HTML控件,那么你可以使用像return false

$("#myDiv").delegate("tr", "click", function() {  
    enter code here 
    return false; 
});