我正在尝试在gridComplete事件期间创建的按钮的onclick事件中调用一个函数.Loads OK ...这里是第一行中按钮的渲染html的样子
<input type="button" onclick="deleteRow(9197113);" value="Delete" style="height: 22px; width: 70px;">
但是当我点击按钮时......函数没有被调用,而firebug说......。
未定义deleteRow
如何调用函数,而不是使用内联javascript ,,,(它确实可以使用BTW,但我想将函数称为可读性和可维护性)。我已经包含了工作内联javascript ...它在下面的代码段中被注释掉了......
以下是jqGrid设置的网格完成部分。
jQuery("#list").jqGrid({
........................
gridComplete: function() {
var ids = jQuery("#list").jqGrid('getDataIDs');
for (var i = 0; i < ids.length; i++) {
var cl = ids[i];
de = "<input style='height:22px;width:70px;' type='button' value='Delete' onclick='deleteRow('" + cl + "' );' />";
//de = "<input style='height:22px;width:70px;' type='button' value='Delete' onclick=\"jQuery('#list').jqGrid('delGridRow', '" + cl + "', {msg: 'Delete this entry?'});\" />";
jQuery("#list").jqGrid('setRowData', ids[i], { Delete: de });
}
}
........................
});
这是deleteRow()函数......
function deleteRow() {
alert("hit delete button");
// jQuery("#grid_id").jqGrid('delGridRow', row_id_s,options );
}
答案 0 :(得分:2)
我会更改你的网格完整功能,这样它就会给插入一个说“删除”的类,然后在我的文档就绪函数中为该类选择器设置一个实时点击事件。
类似这样的事情
gridComplete: function() {
var ids = jQuery("#list").jqGrid('getDataIDs');
for (var i = 0; i < ids.length; i++) {
var cl = ids[i];
de = '<input style="height:22px;width:70px;" type="button" class="delete" value="Delete" />';
$("#list").jqGrid('setRowData', ids[i], { Delete: de });
}
}
$('#list .delete').live('click',function(){
var id = $(this).parent().attr('id');
});
答案 1 :(得分:1)
您可以将deleteRow
定义为自定义jQuery函数,然后在选定元素上调用它。
$.fn.deleteRow = function() {
row_id = $(this).attr('id');
return $("#grid_id").jqGrid('delGridRow', row_id);
}
这样称呼:
$("#grid_id button[value=Delete]").click( function() {
$(this).parents('.row_class').deleteRow();
});
我想这需要更复杂 - 我不熟悉jqGrid,但你需要做的是非常简单。
你能发贴一些标记吗?很难说出如何按ID选择行而不看它。