2013-04-04 107 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); 
});