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