2

您好正在开发一个包含在 sharepoint 应用程序中的 webpart,在某些情况下我需要停止重定向。但它不起作用,我正在尝试使用

$('a').click(function(event){
                event.preventDefault();
                event.stopImmediatePropagation();
                return false;
            });

它执行并且无论如何重定向完成。我怎样才能打破它?

目的是:当用户在页面上更改某事时,我需要询问他是否要继续,然后停止从他可能点击的其他链接的任何重定向。

编辑:我刚刚检查并使用带有链接的常规 a 它可以工作,但问题在于这样的链接:

<a title="Delivery And Technology" class="ms-cui-ctl-large" id="someId" role="button" onclick="return false;" href="javascript:;" unselectable="on" mscui:controltype="" jQuery182001210093900916337="93">

里面有这个html

<SPAN class=ms-cui-ctl-largeIconContainer unselectable="on"><SPAN class=" ms-cui-img-32by32 ms-cui-img-cont-float ms-cui-imageDisabled" unselectable="on"><IMG style="TOP: -96px; LEFT: -160px" alt="Delivery And Technology" src="/_layouts/1033/images/ps32x32.png" unselectable="on"></SPAN></SPAN><SPAN class=ms-cui-ctl-largelabel unselectable="on">Delivery And<BR>Technology</SPAN>

所以似乎当我点击这个java脚本时识别它并重定向我所以我想要实现的是检测它并在它将我重定向到其他页面之前停止。

4

3 回答 3

10

这也将防止动态添加的锚点导航:

$(document).on('click', 'a', function(e){
     e.preventDefault();
     e.stopImmediatePropagation();
     return false;
});

steveukx 建议速记:

$(document).on('click', 'a', false);
于 2013-04-04T12:28:35.007 回答
0

我最好的猜测是您在 DOM 准备好之前运行此代码。尝试将其包装在DOM-ready 回调中:

$(function () {
    $('a').click(function(event){
        return false;
    });
});

请注意,返回 false 等价于.preventDefault()and.stopImmediatePropagation()一起,因此仅返回 false 就足够了。在您的情况下,仅使用它可能更合适,.preventDefault()但没有别的。

于 2013-04-04T12:29:14.867 回答
0

如果元素在代码执行之前附加了处理程序,则无法可靠地删除或阻止处理程序运行。

假设你jQuery有空,并且在元素被添加到 DOM 并附加了它的处理程序之后运行这个函数,你可以用相同的元素替换它:

jQuery('a').replaceWith(function(index, innerHTML) {
  return jQuery(this.cloneNode(false)).html(innerHTML);
});
于 2013-04-04T15:50:42.490 回答