2012-09-08 49 views
0

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

我使用JSON来返回要呈现的数据,当没有值时,而不是仅输出任何内容,而是使用jqGrid输出空格。这是造成问题的原因,因为如果单元格为空,我需要触发一个函数。

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

纵观最新的jqGrid演示这个问题是可以复制:

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

我明白这是有可能的有效性原因,但有一种解决方法吗?目前我的工作选择上写着:

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

我曾尝试使用:下面包含了把它们混合起来,但没有任何运气至今:

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

我将不胜感激任何帮助!

更新1:

我公司生产的此的jsfiddle它扩展了问题:http://jsfiddle.net/fJZst/

我已经复制从我表一个线保持尽可能简单。在演示中,如果将鼠标悬停在不包含空格的单元格上,您将收到警报。如果它确实包含空格,则不会。如果您将警报替换为头部的工具提示,则选择器看起来不错。如果我尝试这jqGrid的警报始终闪光所以我有点更糊涂..

回答

1
$('.jqgrow tr td').filter(function() { 
     return $.trim($(this).text()) != '' 
}); 
+0

我会将此标记为答案,因为如果我没有以其他方式处理事情,它会起作用。我现在输出一个短划线( - )而不是空白单元格,然后我可以使用td:contains来获得我想要的结果。 –

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()); 
});