【问题标题】:Binding hover and/or onClick to a single cell within a jqgrid cell将悬停和/或 onClick 绑定到 jqgrid 单元格中的单个单元格
【发布时间】:2014-09-17 15:07:23
【问题描述】:

我已经在 stackoverflow 中搜索了这个问题的答案,但我找不到答案(或者我对答案的理解不够深入,无法知道我的问题已经得到解答,所以如果是后者,请接受我的歉意是这样)。

您可以在http://www.bcgsc.ca/downloads/bdavis/tempsite/ 上查看我正在开发的网站示例。

我希望能够为行名设置一个 onHover 或 onClick(或理想情况下两者,每个都会导致不同的操作)。您可以通过查看列标题来查看此功能的示例。如果您允许鼠标光标悬停在列标题 H3K4me3(例如)上,它将显示一个简短的描述,如果您单击它,它将打开一个网页,我将在其中更深入地放置内容关于它。我希望能够为行标题(例如 CD19+ 单元格)重新创建此功能。

目前,网站通过读取 data.xml 文件来填充网格,该文件指定了足够的信息来显示网格中包含的值,并将信息提供给系统后端,以便当用户点击'在 UCSC 浏览器中查看' 传输正确的信息。在 data.xml 文件中使用了 CDATA 标记,下面粘贴了一个简短的示例。

<cell><![CDATA[ Blood]]></cell>

我设想实现此功能的方式是在 CDATA 对象中放置一些 javascript + html,但显然这不起作用,因为它是 CDATA,所以它没有被解析,但是用 PCDATA 替换 CDATA 会导致后端中断(我不知道为什么)并且表格根本没有填写。我什至尝试用一个东西简单地替换整个 CDATA sn-p,但这也不是由网络浏览器处理的,我想这是因为 jqgrid 传输数据的方式。

请注意,当您将鼠标悬停在行名上时,您可以看到该单元格的内容。因此,onHover 功能的合理策略是动态更改该单元格的标题,或者以某种方式修改 jqgrid 以允许它将单元格内容设置为不同于 title 属性的内容。

一个理想的解决方案将允许我同时拥有 .hover 功能和 .onClick 样式功能,但如果我只能让 onClick 工作,我会很满意。这绝对是更重要的功能。目前,单元格没有唯一的 id,但行有。

那么,谁能帮助我或提供一些查看方向。

谢谢, 布拉德戴维斯

【问题讨论】:

  • 给任何查看该网站并发现它不起作用的人的说明,那是因为这是我的网站的工作/测试副本,所以当我做事时,我倾向于破坏它。如果浪费了您的时间,我深表歉意。

标签: jquery jqgrid


【解决方案1】:

网格的每个单元格都由&lt;td&gt; HTML 元素表示。单元格的title 属性将默认设置为单元格的内容。使用cellattr 回调,您可以为工具提示文本构造另一个 静态值。我将该值命名为静态,因为它将作为属性保存在单元格中。另一方面,您可以根据同一行的 other 单元格构造值。 The answer提供了对应的代码示例和demo。

jqGrid 支持onCellSelectbeforeSelectRow,如果用户单击网格的单元格,则会调用它们。可以使用回调的最后一个参数(the documentation 中的e 参数)来获取被点击单元格的列号或列名。回调还获得rowid 作为参数。因此可以使用getCellgetRowDatagetLocalRow 来访问同一行的其他列的数据。参见the answer 示例,它显示了如何获取单击单元格上的列名(cm[iCol].name 是代码片段中的列名)。

【讨论】:

  • 感谢您的帮助,非常感谢。我将查看您提供的链接并尝试理解它。我两天前才开始使用javascript,所以还有很多我不明白的地方。
  • @BradDavis:不客气!如果你是初学者,我建议你更多地检查工作演示示例,在开发者工具中调试它(使用 F12 开始)并在你的代码中传输代码片段。为the answer 创建的The demo 包含一个使用beforeSelectRow 回调的代码示例。
  • 您好@oleg,您提供的链接具有说明性和帮助性。我使用的是 Mac,并且使用“F12”不会启动开发工具,但我已经想出了如何打开它们。所以我可以在开发者工具中更改 index.html 文件中的 javascript,并且更改会立即反映?
  • 我正在尝试添加其他详细信息,但是当我去编辑原始帖子时,它拒绝保存它我收到“无法保存”错误。
  • @BradDavis:如果您想“玩”演示,例如可以使用 JSFiddle。试用演示:jsfiddle.net/OlegKi/t9L0b2sy。它包含cellattr,与我向您推荐的第一个演示相同。您可以在第一列的单元格上看到工具提示。您可以更改 JSFiddle 中的任何代码并再次执行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-13
  • 2015-11-03
  • 2011-09-03
  • 2019-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多