2013-04-04 109 views
2

嗨正在开发它包含在SharePoint应用一个web部件,我需要在某些情况下,停止重定向。但它不起作用,我正在尝试使用停止重定向在JavaScript

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

它会执行并重新进行重定向。我怎么能打破它?

它的目的是:当用户改变某事页面上我要问,如果他想继续或取消,然后阻止他可能会点击链接行吟诗人任何重定向。

编辑: 我只是检查,并与链接经常一个里面工作,但问题是,像这样的链接:

<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"> 

拥有这个网站

<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脚本识别它并重定向我,所以我想要的是检测它并停止,然后将它重定向到其他页面。

+0

你是什么意思与重定向?你想阻止用户访问以下链接吗? – 2013-04-04 12:27:30

+0

首先包含jQuery并将代码粘贴到document.ready中。您只需要第一个参数preventDefault()来防止锚点的默认操作。 – adeneo 2013-04-04 12:28:33

回答

7

这将防止动态添加锚点从浏览过:

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

steveukx建议速记:

$(document).on('click', 'a', false); 
+0

您也可以使用。对的'$(文件)的简写(“点击”,“A”,虚假);' – steveukx 2013-04-04 12:32:00

+0

@steveukx感谢,这真是再好不过了 – karaxuna 2013-04-04 12:35:00

+0

@karaxuna的问题是,这一个元素有ID和重定向是绑定在这个ID的Java脚本,我不能修改它casuse它来自sharepoint,所以我所看到的是停止DOM上的所有操作 – kosnkov 2013-04-04 12:46:12

0

我最好的猜测是,你运行该代码之前DOM已准备就绪。尝试将它包装在一个DOM-ready callback

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

注意,返回false相当于.preventDefault().stopImmediatePropagation()在一起,所以才返回false就足够了。在你的情况下,可能更适合只使用.preventDefault(),但别无其他。

0

如果该元素有一个已经连接了你的代码执行前一个处理程序,它不能够可靠地消除或防止处理程序的运行。

假设你有jQuery提供,并经过元素被添加到DOM,而且其处理程序连接,你可以用相同的元素替换它运行此功能:

jQuery('a').replaceWith(function(index, innerHTML) { 
    return jQuery(this.cloneNode(false)).html(innerHTML); 
});