2012-09-08 84 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()); 
});