簡體   English   中英

使用jQuery修改onclick事件

[英]Modifying the onclick event with jQuery

我有一個javascript片段,在我的頁面上顯示一個小部件。 有一些鏈接可以通過腳本輸出,如下所示:

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

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

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

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

使用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;" 並且必須在腳本將內容輸出到頁面后運行。

有任何想法嗎?

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

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

你應該能夠在jquery中覆蓋它,試試這個:

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

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

修復了,這將有效地停止瀏覽器對click事件的默認解釋

你嘗試過使用href="javascript:"嗎?

你也可以使用:

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

我會這樣做的

$( '#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 );
  });
});

查看jQuery中的preventDefault對象。

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

這將允許它最初不運行或者在jQuery單擊處理程序中添加返回false。 preventDefault可能在Firefox中不起作用。 我不完全確定。

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

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM