我有一个Javascript代码,用于完整gridview行点击以检查同一行中的复选框。 (放在外部文件中)
$(document).ready(function () {
$('tr.dataRow').on('click', function () {
var checked = $(this).find('input[id*=chkBusinessSelected]').prop('checked');
$(this).find('input[id*=chkBusinessSelected]').prop('checked', !checked);
});
});
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(function () {
$('tr.dataRow').on('click', function () {
var checked = $(this).find('input[id*=chkBusinessSelected]').prop('checked');
$(this).find('input[id*=chkBusinessSelected]').prop('checked', !checked);
});
});
在用户控件背后的代码中
protected void grdBusiness_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.CssClass = "dataRow";
}
}
请注意,它们包含在更新面板中以避免完全回发。该功能用于多次选择gridview中的项目。一切都运行良好,直到我在父页面中使用用户控件,其中,该页面也具有更新面板用法。
使用gridview行单击功能,然后单击用户控件外部的另一个按钮来处理某些内容。再次使用或重复该功能时,我无法单击该复选框。 Javacript代码停止工作。
我尝试删除父页面上的UpdatePanel,但它确实有效。但是我需要将Update面板放在User Control和Parent页面中。
答案 0 :(得分:0)
对于jQuery 1.7+,您可以使用.on()将事件处理程序附加到父元素,并将带有'dataRow'的a选择器作为参数传递。
所以不是......
$('tr.dataRow').click( function() {
// do something
});
你可以写......
$('body').on('click', 'tr.dataRow', function() {
// do something
});
不是你也可以在$(document).ready(function () {
之外写出来
如果您使用的是旧版本,则可以使用jQuery的.live()
方法。