您正在开发一个包含在sharepoint应用程序中的webpart,我需要在某些情况下停止重定向。但它不起作用,我正在尝试使用
$('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">
里面有这个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脚本识别它并重定向我所以我想要实现的是检测它并在它将我重定向到其他页面之前停止。
答案 0 :(得分:9)
这将阻止动态添加的锚定导航:
$(document).on('click', 'a', function(e){
e.preventDefault();
e.stopImmediatePropagation();
return false;
});
steveukx提出了简写:
$(document).on('click', 'a', false);
答案 1 :(得分:0)
我最好的猜测是你在DOM准备好之前运行这段代码。尝试将其包裹在DOM-ready callback:
中$(function () {
$('a').click(function(event){
return false;
});
});
请注意,返回false一起等同于.preventDefault()
和.stopImmediatePropagation()
,因此只返回false就足够了。在您的情况下,仅使用.preventDefault()
而不是其他任何内容可能更合适。
答案 2 :(得分:0)
如果元素在代码执行之前附加了处理程序,则无法可靠地删除或阻止处理程序运行。
假设您有jQuery
可用,并且在将元素添加到DOM并附加其处理程序后运行此函数,则可以使用相同的元素替换它:
jQuery('a').replaceWith(function(index, innerHTML) {
return jQuery(this.cloneNode(false)).html(innerHTML);
});