在Javascript确认对话框后,网页会显示在顶部。怎么阻止这个?

时间:2013-08-29 04:43:44

标签: javascript jquery

我正在使用确认对话框作为是/否确认是否从页面中删除一些元素。那部分工作正常。问题是点击“确认”或“取消”后页面滚动到顶部。我怎么能阻止这种行为?

$('.deleter').click(function () {
    if (confirm('Do you want to remove' + $(this).attr('name') + '. This action can not be undone.')) {
        $('.g' + $(this).attr('itemId')).remove();
        $('.' + $(this).attr('itemId')).remove();
    }
});

如果做不到这一点,那么将窗口设置回原来的空间就可以了。

编辑:HTML CODE

<a href='#' class='deleter' name='eg' itemId='4'>delete</a>

感谢您阅读

5 个答案:

答案 0 :(得分:6)

它实际上是跳转到#的位置(a的默认行为)。 您需要preventDefault()阻止此默认行为。

试试这个,

$('.deleter').click(function (e) {
    e.preventDefault();
    if (confirm('Do you want to remove' + $(this).attr('name') + '. This action can not be undone.')) {
        $('.g' + $(this).attr('itemId')).remove();
        $('.' + $(this).attr('itemId')).remove();
    }
});

答案 1 :(得分:1)

听起来你正在将事件绑定到一个锚元素,它的默认行为是对资源进行GET。以下内容将阻止锚点的默认行为:

$('.deleter').click(function (e) { 
    e.preventDefault();

    if (confirm('Do you want to remove' + $(this).attr('name') + '. This action can not be undone.')){
    $('.g' + $(this).attr('itemId')).remove();  
    $('.' + $(this).attr('itemId')).remove();
    } 
});

$('.deleter').on('click', function (e) {
    e.preventDefault();

    if (confirm('Do you want to remove' + $(this).attr('name') + '. This action can not be undone.')){
    $('.g' + $(this).attr('itemId')).remove();  
    $('.' + $(this).attr('itemId')).remove();
    } 
});

答案 2 :(得分:1)

Anil是对的。您的链接告诉它转到页面顶部:

<a href='#' class='deleter' name='eg' itemId='4'>delete</a>

如果您不希望您的链接像实际的锚链接那样:

一个。不要把它变成一个链接。将click事件绑定到不同类型的对象(例如按钮)

湾给href一个适当的空值,例如javascript:

 <a href='javascript:;' class='deleter' name='eg' itemId='4'>delete</a>

答案 3 :(得分:0)

这是因为锚标签而发生的。更改锚标记,如此更改** href =“#_”**

<a href='#_' class='deleter' name='eg' itemId='4'>delete</a>

答案 4 :(得分:0)

确认,警报和提示实际上是与浏览器相关的功能。我们无法改变其行为或设计。或者你想使用jquery插件来对话而不是这些。请参阅此http://labs.abeautifulsite.net/archived/jquery-alerts/demo/