0

我正在编写一些基于 jqGrid 的代码,并且遇到了与渲染空单元格有关的问题。

我使用 JSON 返回要渲染的数据,当没有值时,jqGrid 不输出任何内容,而是输出一个空格。这会导致问题,因为如果单元格为空,我需要触发一个函数。

我使用 Firebug 查看了返回的 JSON,它绝对正确,没有返回空间。

查看最新的 jqGrid 演示,可以复制此问题:

  1. 访问http://trirand.com/blog/jqgrid/jqgrid.html
  2. 在 Firebug 中查看任何包含空单元格和“检查此元素”的演示网格。
  3. 你会注意到这个演示网格做同样的事情

我很欣赏这可能是出于有效性原因,但有解决方法吗?目前我的工作选择器显示:

$(".jqgrow td:not(:first-child)")

我尝试使用 :contains 如下组合它们,但到目前为止没有任何运气:

$(".jqgrow td:not(:contains(' '))")
$(".jqgrow td:not(:contains(' '))")
$(".jqgrow td:not(:contains(' '))")

我将不胜感激任何帮助!

更新 1:

我制作了这个扩展问题的 jsFiddle:http: //jsfiddle.net/fJZst/

我已经从表中复制了一行以使其尽可能简单。在演示中,如果您将鼠标悬停在不包含空格的单元格上,您将收到警报。如果它确实包含空格,则不会。如果您将警报替换为您脑海中的工具提示,则选择器看起来不错。如果我在 jqGrid 中尝试这个,警报总是会触发,所以我有点困惑..

4

2 回答 2

1
$('.jqgrow tr td').filter(function() {
        return $.trim($(this).text()) != ''
});
于 2012-09-08T13:58:14.180 回答
0

您可以创建一个自定义伪类:http: //jsfiddle.net/fJZst/1/

$.expr.pseudos.trimmedEmpty = $.expr.createPseudo(function() {
    return function(elem) {
        return $.trim( $.text(elem) ) === "";
    };
});

$(".jqgrow td:not(:trimmedEmpty)").mouseenter(function() {    
    alert($(this).text());
});
于 2012-09-09T10:34:23.947 回答