更改通过ajax加载的锚标记href

时间:2011-10-28 17:13:48

标签: javascript jquery asp.net ajax

基本上我有一个gridview,我通过服务器而不是内存页面,问题是gridview中的每一行都有一个我用javascript更改的URL,我用于asp中的这个colum的服务器控件:HyperLinkField 。这必须在javascript动态中完成的原因是因为我必须将附加到url的参数作为查询参数进行转义,因为它可能在其中包含哈希标记。所以我的javascript:

$('#<%=grid1.ClientID%> a').each( function(){
 var url=   $(this).attr("href");
    var parameter =//this line gets the parameter from the url
  url= "Page.aspx?param="+escape(parameter);
  $(this).attr("href", url);
});

这适用于第一页加载,其中包含最初存储在gridview中的url,但由于我在服务器上进行分页并使用ajax(asp.net updatepanel),所以下一页没有触发javascript因为它不刷新页面。我认为jquery live会在这里发挥作用,但不确定这是否准确,因为我认为必须触发一个事件才能启动实时处理程序

1 个答案:

答案 0 :(得分:1)

不,不幸的是live处理程序无法用于更改实际的href。但是,如果你稍微改变一下你的方法,你可以得到同样的效果。

$('#<%=grid1.ClientID%> a').live('click', function(e) {
    e.preventDefault();
    var url = $(this).attr("href");
    var parameter =//this line gets the parameter from the url
    url = "Page.aspx?param="+escape(parameter);
    window.location = url;
});

因此,您不必更改每个链接上的实际属性,而是覆盖与单击该链接相关联的行为。