我正在使用确认对话框作为是/否确认是否从页面中删除一些元素。那部分工作正常。问题是点击“确认”或“取消”后页面滚动到顶部。我怎么能阻止这种行为?
$('.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>
感谢您阅读
答案 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/