使用jQuery修改onclick事件

时间:2010-12-07 20:10:51

标签: javascript jquery html

我有一个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;",并且必须在脚本将内容输出到页面后运行。

有什么想法吗?

6 个答案:

答案 0 :(得分:4)

试试这个。诀窍是在处理程序中调用preventDefault,这可以防止默认元素操作传播。我希望这会有所帮助。

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

答案 1 :(得分:2)

你应该能够在jquery中覆盖它,试试这个:

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

这会停止click事件的正常进程。

已修复,这将有效停止浏览器对点击事件的默认解释

答案 2 :(得分:2)

您是否尝试过使用href="javascript:"

答案 3 :(得分:2)

你也可以使用:

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

答案 4 :(得分: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 );
  });
});

答案 5 :(得分:2)

查看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