0

私は現在、jQueryToolsTooltipと戦っています。IE8 / Firefoxで要求されているとおりに機能しますが、クライアントはIE6でも機能する必要があります。私が彼らのサイトで見たすべてのこと、そしてそれがプロジェクトの他の場所で機能するという事実から、私はそれがIE6と互換性があることを知っています。

AJAXで生成されたテーブル行のリストにツールチップを添付しているという事実に、ハングアップが発生していると思います。私はこれまでにこの2つの方法を試しましたが、どちらもIE8 / Firefoxで機能するようで、どちらもIE6では機能しません。

試行1:

        $(document).ready(function() {
                // get the undeclared additions and populate the table
                $.getJSON("/Drm/Pc/GetUndeclaredAssistanceRecords?partnumber=<%= Model.PartNumber %>",
                function(data) {
                    var rowEntry = "";
                    var rowClass = "odd";
                    for (var i = 0; i < data.length; i++) {

                        // Fix for Bug 71 starts
                        strComment = "";
                        for (var k = 0; k < data[i].Comment.length; k++) {
                            if (data[i].Comment.substring(k, k + 1) == "'")
                                strComment = strComment + "";
                            else
                                strComment = strComment + data[i].Comment.substring(k, k + 1);
                        }

                        strComment = strComment.replace(";", ",");
                        strComment = strComment.substring(0, 400);

                        var rowEntry = "<tr class='" + rowClass + "'><td class='pcassistresultsCenterAlign'>" + data[i].PurchaseOrder + "</td><td class='pcassistresultsLeftAlign'>" + data[i].SupplierName + "</td><td class='pcassistresultsCenterAlign'>" + data[i].Amount + "<td class='pcassistresultsCenterAlign'>" + data[i].RecordType + "</td></tr>";
                        rowEntry = rowEntry + "<tr class='" + rowClass + "'><td class='pcassistresultsDetailTitle'>Shipment Date:</td><td>" + data[i].ShipDate + "</td><td class='pcassistresultsDetailTitle'>Input On:</td><td class='pcassistresultsDetailData'>" + data[i].InputOn + "</td></tr>";
                        rowEntry = rowEntry + "<tr class='" + rowClass + "'><td class='pcassistresultsDetailTitle'>Req Recon:</td><td class='pcassistresultsDetailData'>" + data[i].ReqRecon + "</td><td class='pcassistresultsDetailTitle'>Input By:</td><td class='pcassistresultsDetailData'>" + data[i].InputBy + "</td></tr>";
                        rowEntry = rowEntry + "<tr class='" + rowClass + "'><td class='pcassistresultsDetailTitle'>From Site</td><td class='pcassistresultsDetailData'>" + data[i].FromSite + "</td><td class='pcassistresultsDetailTitle'>Input By Phone:</td><td class='pcassistresultsDetailData'>" + data[i].InputByPhone
                        rowEntry = rowEntry + "<tr class='" + rowClass + "'><td class='pcassistresultsDetailTitle' valign='top'>Comment:</td><td colspan='3' rowspan='2' title='" + strComment + "' ><div style='overflow:hidden; height:30px;'>" + data[i].Comment + "</div></td></tr>";


                        rowEntry = rowEntry + "<tr class='" + rowClass + "'><td>&nbsp;</td></tr>";

                        //Fix for Bug 71 ends

                        $('#unDecAddTable tbody>tr:last').after(rowEntry);
                        rowClass = rowClass == 'odd' ? 'even' : 'odd';
                        }
                        $('#unDeclaredAdditions *').tooltip();
                });
            });

試行2は上記と同じですが、.tooltip()の部分が削除され、次のコードがdocument.ready関数の外部に追加されています。

        function PinTooltips() {
            $('#unDeclaredAdditions *').tooltip();
            $('#declaredAdditions *').tooltip();
        }
        $('#declaredAdditions').ajaxComplete(function(event, request, settings) {
            PinTooltips();
        });

誰かが私がどこで間違っていたのか見たり、これが機能するのを妨げるIE6について何か変わったことを知っていますか?

4

1 に答える 1

0

さて、私は問題を見つけました...そしてこれは奇妙です。プロジェクトの他の場所では、ツールチップを非常に大きな範囲のフィールドに割り当てていました。IE6 を除くすべてのブラウザで、必要なようにツールチップをコメント td に割り当てていませんでした。しかし、何らかの理由で、IE6ではそうでした。そのため、もう一度 .tooltip() を呼び出そうとすると、壊れていました。その結果、ブラウザーが IE6 であることを確認するコードを挿入することになりました。IE6 の場合は、ツールチップを再度添付しないでください。

非常に奇妙で、なぜそのように機能するのかわかりませんが、それが私の解決策でした。

于 2011-03-15T20:31:17.167 に答える