2010-12-07 100 views
5

我有一個JavaScript片段,它在我的頁面上顯示一個小部件。有一些鏈接可以通過腳本輸出,如下所示:用jQuery修改onclick事件

<a href="#" onclick="somefunction()">Link</a> 

這些鏈接會導致一些JS觸發。那很棒。問題是href="#"onclick屬性末尾沒有"return false;"

當我點擊其中一個鏈接時,瀏覽器跳轉到文檔的頂部。將小部件放置在文檔底部附近時,這並不好。

不幸的是,我無法控制腳本的輸出。

使用jQuery我可以使用$("#wxheader ul li a")引用這些鏈接。我試着下面的代碼,但它不工作:

$(document).ready(function(){ 
    $("#wxheader ul li a").each(function(){ 
     var onclick = $(this).attr("onclick") + "; return false;"; 
     $(this).attr("onclick", onclick); 
    }); 
}); 

我想寫一個jQuery的功能,這將改變每個onclick屬性追加"return false;",它具有運行腳本有輸出內容到頁面後。

任何想法?

回答

4

的解釋試試這個。訣竅是在處理程序中調用preventDefault,這可防止默認元素操作傳播。我希望這有幫助。

$("#wxheader ul li a").click(function(e){ 
    e.preventDefault(); 
    return false; 
}); 
+0

大聲笑...什麼都是反對票? – James 2010-12-07 20:22:01

+0

不知道這些downvotes。想想你的競爭對手不希望你得到信用。你的迴應是最快的,它做到了我所需要的。 – Jazzerus 2010-12-07 20:27:23

2

你應該能夠覆蓋它在jQuery的,試試這個:

$("#wxheader ul li a").each(function(){ 
    $(this).click(function(e) { 
     e.preventDefault(); 
    }); 
}); 

這將停止click事件的正常過程。

修正,這將有效地阻止瀏覽器的默認點擊事件

+0

這是不對的,'each`遍歷jQuery的集合,它不綁定click事件。 – 2010-12-07 20:16:23

+0

這不會工作,因爲那裏沒有任何事件! – RobertPitt 2010-12-07 20:17:39

+0

你說得對,我抄了他的代碼太快了,編輯修復它。 – 2010-12-07 20:24:57

2

您是否嘗試過使用href="javascript:"

2

您還可以使用:

<a href="javascript:void(0)" onclick="somefunction()">Link</a> 
2

我會做這樣的

$('#wxheader ul li a').each(function(i, element) 
{ 
    // Capture the existing callback function 
    var originalCallback = element.onclick; 

    // Now, remove it from the elemnet 
    element.onclick = null; 

    // And replace it with our own, which calls the orignal 
    // with the proper context, and prevents the default 
    // event action 
    $(element).click(function(event) 
    { 
    event.preventDefault(); 
    originalCallback.call(window); 
    }); 
}); 
2

查找到jQuery中的對象的preventDefault。

http://api.jquery.com/event.preventDefault/

,將允許它不運行或開始還增加回報在jQuery的單擊處理程序錯誤。 Firefox中的preventDefault可能不起作用。我不完全確定。

$("#wxheader ul li a").click(function(){ 
    //do stuff// 
    return false; 
}); 

這是一個測試頁面,我用鏈接上的某些ajax功能製作了一個試圖覆蓋常規點擊的人。這是我談論它的功能,如果它是你正在尋找的。

http://testing.kobbyappiah.com/Design_and_Evolve/ajaxTest.html