我正在尝试将名为 rows 的函数添加到 jqGrid jQuery 插件,但我无法确定语法。这是我的非工作版本。
(function($) {
$.fn.jgrid.rows = function(data) {
// do something
};
});
(function($) {
$.fn.rows = function(data) {
// do something
};
});
$.jqgrid.fn.rows = function(data) {
// do something
};
$.fn.rows = function(data) {
// do something
};
什么是正确的语法?
谢谢!
最佳答案
您的问题的正确答案似乎在一定程度上取决于该方法应该做什么 rows你想要实现的。我试着猜测一下,并给出与我对你的问题的理解相对应的实现。
首先,jqGrid 是 jQuery 插件,如果您编写示例
$(myselector).jqGrid('setSelection',rowid);
可以是$(myselector)选择 more 作为一个 DOM 元素。例如
$('table').jqGrid('setSelection',rowid);
将尝试在所有 <table> 上调用 jqGrid 方法“setSelection”页面上的元素。所以this DOM 元素数组中的元素(应该是 <table> DOM 元素),而不是只有一个元素。
另一个一般性的评论。有一些 jQuery 方法可以像这样被链接起来
$("#list").jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid');
如果“setGridParam”执行某些操作并返回 this支持链接。其他方法不支持链接并返回方法需要返回的内容。例如getDataIDs返回 id 数组,不能链接 getDataIDs与另一个 jQuery 方法。
现在我回到你的问题。我最好将新方法命名为 getRowsById .该方法将返回包含表示 <tr> 的 DOM 元素的数组。 (表格行)。该方法将有 rowid作为参数。然后可以用新方法扩展 jqGrid:
$.jgrid.extend({
getRowsById: function (rowid){
var totalRows = [];
// enum all elements of the jQuery object
this.each(function(){
if (!this.grid) { return; }
// this is the DOM of the table
// we
var tr = this.rows.namedItem(rowid);
if (tr !== null) { // or if (tr !== null)
totalRows.push(tr);
}
});
return totalRows;
}
});
首先,我在示例中使用了方法 $.jgrid.extend定义here .它主要做 $.extend($.fn.jqGrid,methods); .然后,因为我们实现的方法不能链接,我们定义 totalRows稍后将作为该方法的结果返回的变量。现在我们必须枚举 this 中的所有对象(如上例中的 $(myselector) 或 $('table') 的元素)。我们这样做是为了尊重 this.each(function(){/*do here*/});构造。然后在循环内部我们执行以下操作
if (!this.grid) { return; }
通过语句我们测试当前DOM元素是否有grid属性(property)。它不是 table 的标准属性元素,但 jqGrid 扩展了 table 的 DOM 元素与属性(property)。通过测试我们可以跳过例如 other table jqGrid 所在的元素未应用(不是 jqGrid)。然后我使用 this 的事实必须是 table 的 DOM具有 rows 的元素属性(参见 here 和 here ),我使用它的 namedItem方法。 native 实现的方法与 $("#"+rowid) 一样工作得更好,但做同样的事情。毕竟我们返回数组 totalRows .如果行 ID 不在网格中的行将没有元素,如果存在则为 1。如果当前的 jQuery 选择器选择更多作为一个网格并且我们有一个错误并且包含在具有相同 id 的两个网格行中,则返回的数组的长度将大于 1。所以我们可以这样使用它
var grid = $("#list");
var tr = grid.jqGrid('getRowById','1111');
alert(tr.length);
最后我想提一下方法 $.jgrid.extend不仅在您想介绍新的 jqGrid 方法时会有帮助。 有时已经有一些 jqGrid 方法,但它并不是您所需要的。因此,您希望修改后的方法在原始 jqGrid 方法的开头或末尾执行某些操作。在这种情况下,我们可以执行以下操作
var oldEditCell = $.fn.jqGrid.editCell;
$.jgrid.extend({
editCell: function (iRow,iCol, ed){
var ret;
// do someting before
ret = oldEditCell.call (this, iRow, iCol, ed);
// do something after
return ret; // return original or modified results
}
});
在例子中我们覆盖了原来的editCell with 方法将由 jqGrid 本身调用,并在调用之后执行某些操作。
关于javascript - 向 jqGrid jQuery 插件添加一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6387805/
当我使用Bundler时,是否需要在我的Gemfile中将其列为依赖项?毕竟,我的代码中有些地方需要它。例如,当我进行Bundler设置时:require"bundler/setup" 最佳答案 没有。您可以尝试,但首先您必须用鞋带将自己抬离地面。 关于ruby-我需要将Bundler本身添加到Gemfile中吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4758609/
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何
我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>
在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/
我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在
我有一个ModularSinatra应用程序,我正在尝试将Bootstrap添加到应用程序中。get'/bootstrap/application.css'doless:"bootstrap/bootstrap"end我在views/bootstrap中有所有less文件,包括bootstrap.less。我收到这个错误:Less::ParseErrorat/bootstrap/application.css'reset.less'wasn'tfound.Bootstrap.less的第一行是://CSSReset@import"reset.less";我尝试了所有不同的路径格式,但它
我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以
我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re
如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象