您同时发布了两个不同的问题。其他用户很难找到信息。最好将当前问题一分为二。
尽管如此,关于您问题的第一部分,我只想描述旧搜索对话框的行为是因为使用了jQuery.clone。该功能有许多错误,长期以来没有修复。所以搜索对话框在某些情况下会出错。在搜索对话框的新实现中,没有明确使用jQuery.clone 作为解决问题的唯一安全方法。 默认实现了您在新版搜索对话框中遗漏的行为。在新的搜索对话框中,相应的代码不存在,但您可以自己编写。大多数情况下,您需要在afterRedraw 回调中编写自定义代码。
您应该考虑到 jqGrid 现在支持强大的multipleGroup: true 选项。所以你需要的可能是从同一组的另一个控件中复制选择:
关于你的第二个问题:
The answer 包含the demo,它描述了解除click 绑定的想法。只有当它是唯一的按钮时,最好的事件可能是取消绑定或隐藏“删除规则”按钮。
如果您不使用multipleGroup: true 选项,您可以尝试以下方法
$.extend($.jgrid.search, {
multipleSearch: true,
overlay: 0,
afterRedraw: function () {
// don't permit to remove the last rule
$('input.delete-rule:first',this).unbind('click').hide();
}
});
如果使用multipleGroup: true,最好是另一个代码
$.extend($.jgrid.search, {
multipleSearch: true,
multipleGroup: true,
overlay: 0,
afterRedraw: function () {
// don't permit to remove the last rule
var $delRules = $('input.delete-rule', this);
if ($delRules.length === 1) {
$delRules.unbind('click').hide();
}
}
});