基本上我有一个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会在这里发挥作用,但不确定这是否准确,因为我认为必须触发一个事件才能启动实时处理程序
答案 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;
});
因此,您不必更改每个链接上的实际属性,而是覆盖与单击该链接相关联的行为。