2011-06-14 55 views
3

我有一个链接:的onClick功能时,停止HREF链接称为

<h2><a href=?p=article&aid='.$article->id.'" onclick="loadPage('article'); return false;">.$article->title.</a></h2> 

,并调用此函数:

function loadPage(page){ 
    $("#content").html("Loading..."); 

    $.post("page.php", {p: page}, function(data){ 
     $("#content").html(data); 
    }); 
} 

但我的javascript一直追着href是仍然有效。 我用过return false;在我的onClick的之前,以防止这个,但它不工作这个时间?

+0

请检查并更新您的第一个代码段(只需复制粘贴的内容即可),因为没有办法做到这一点 – mkilmanas 2011-06-14 20:48:57

+0

您在athesyn.php里面做了什么样的处理 – Dejan 2011-06-14 20:52:00

回答

1

它看起来像你的脚本有错误,并没有到达返回块。如果添加try catch,它将忽略脚本中的错误。

function loadPage(page){ 
try{ 
    $("#content").html("Loading..."); 

    $.post("page.php", {p: page}, function(data){ 
     $("#content").html(data); 
    }); 
} catch(err){} 
} 
1

使用jQuery将click事件绑定到函数可能会更好,因为逻辑更好地分离。

$('h2 a').click(function(event) { 
    $("#content").html("Loading..."); 

    $.post("page.php", {p: page}, function(data){ 
     $("#content").html(data); 
    }); 

    return false; 
}); 

通常,如果href仍处于活动状态是它可能有一个JavaScript错误。

编辑:您还可以使用event.preventDefault()停止href遵循以这种方式绑定的点击功能。

最后,href看起来确实很好(缺少开场白)。这是一个错字吗?

+2

我同意,而不是'return false;'e.preventDefault();(其中'e'是传递给click处理程序的事件参数)会更合适([event.preventDefault()](http:// api .jquery.com/event.preventDefault /)) – mkilmanas 2011-06-14 20:51:42

1

我最喜欢的做法是取代href属性。这具有保持与非JS客户端的兼容性的优点,并且不必处理“停止”事件或任何这样的巫术。例如:

function unobtrusiveLinkSetup(link) { 
    // replace the about link's href 
    J(link).attr('jshref', J(link).attr('href')); 
    J(link).removeAttr('href'); 

    // handle the link's action 
    J(link).click(function(index) { 
      J(this).stop(); 
      // make a request in the background 
      J.get(J(this).attr('jshref'), function(result) { 
       // whatever you need to do with the link.. 
      }); 
    }); 
} 

然后,你可以做unobtrusiveLinkSetup("#myLink");在文档的准备功能,或任何其他地方。

+0

这正是我所需要的。我从我的链接中删除了onclick事件,但是将href事件留给了fire。谢谢! – 2013-02-19 18:24:46