0

rich:dataTable があり、スパンを持つ豊富な列があります。ページがロードされているとき、このスパンは true+false または true+true などの値を取ります。

この値に応じて、このスパンを含む tr を次のように jQuery で非表示にします。

<rich:jQuery query="ready(function() {
jQuery('#inbox:_inboxTable_').find('span[title=test]').each(function(i, o){
        if (jQuery(this).text() == 'true+false' ){
            jQuery(this).closest('tr').fadeOut();
        }
});
})"/>

Internet Explorer と Chrome では正常に動作していますが、Firefox では何かがおかしいです: - ページが正常に読み込まれている場合、tr は非表示になっていますが、ajax 要求 (ページ番号またはサイズの変更) を実行すると、ページのすべてのコンポーネントが表示されます。フェードアウトしています...

手がかりを教えてもらえますか?

4

2 に答える 2

1

closest('tr')Webページのレイアウトがテーブルベースであり、コンテンツ全体が配置されている本文の最初のテーブル行が何らかの形で返されているように聞こえます。

その上、実際にはページのロード中にのみrich:jQuery実行されるため、すべてのajaxリクエストの後にまったく同じクエリが実行されると思われるように思われるかもしれません。ページのどこかに別のjQuery/JSピースがありませんか?それとも、あなたのajaxリクエストは、本来あるべきほど非同期ではないのでしょうか?ready()

ちなみに、これまでに提供した情報は非常に簡単です。より高いレベルからではなく、コードレベルで問題を詳しく説明してみてください。エンドユーザーの観点から何が起こったのかを伝えるだけでなく、開発者の観点からもコードレベルで何が起こったのかを伝えます。どの行が実行され、何が実行されないか。周りを回る変数の値は何でしたか。開発者が知っておくべきそのようなこと。

まだ完了していない場合は、Firebugをインストールし、その優れたJavascriptデバッガーを使用してください。

于 2009-12-09T12:02:12.820 に答える
0

問題が見つかりました!!! --closest('tr')はFirefoxで有害な動作をします。したがって、使用する代わりに:

jQuery(this).closest('tr').fadeOut();

解決策は、スパンの「tr」が見つかるまで親ごとに使用することです。

jQuery(this).parent().parent().parent().fadeOut();
于 2009-12-10T10:13:14.683 に答える