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/

できるだけシンプルにするために、テーブルから1行をコピーしました。デモでは、スペースを含まないセルにマウスを合わせると、アラートが表示されます。スペースが含まれている場合は、含まれません。頭の中のツールチップの代わりにアラートを使用すると、セレクターは見栄えがします。これを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 に答える