このバグは私を絶対に狂ってしまいます。IE7で<TR>を非表示にすると、jQueryのUIボタンが表示されます。
jQuery 1.4.4を使用して、複雑なテーブル行をフィルタリングしようとしています。
行には、<input type="button" />
の要素が含まれており、jQuery UI 1.8.5を使用してスタイルが設定されています。
このスクリーンショットは、検索フィルターが適用されていない行の外観を示しています。
これらの行は、AJAXポストコールを介して動的に追加され、テンプレート化後に挿入されます。これはポストコール用のJSコードです。
$.post($.url('Asset/GetSites/'), { assetType: assetType, siteType: siteType }, function (data) {
//hide the progress spinner
$('.progSpinner').fadeOut();
if (data.error) {
ShowErrorBar();
return;
}
$('#SiteRowTemplate').tmpl(data).appendTo(tbody);
$('#assetTable input[type=button]').button();
//tbody.hide().fadeIn();
//trigger a sort
$('#assetTable').trigger('update');
$('#assetTable').trigger('sorton', [[[0, 0]]]);
$('#pageLbl').text(assetTypeName + ' Assets: ' + siteTypeName);
});
次に、サイトと説明の列に基づいてフィルタリングするための基本的なテキスト入力を使用しています。これが問題の発生場所です。これはそのコードです:
var rows = $('#assetTable tbody tr.assets-site-row');
rows.each(function() {
var row = $(this);
var id = row.attr('id');
if (row.attr('id').toLowerCase().indexOf(val) != -1 ||
row.children('td').text().toLowerCase().indexOf(val) != -1) {
//Search is a match
row.show();
$('#details' + id).show();
}
else {
//Search is not a match
row.hide();
$('#details' + id).hide();
}
});
Chrome、IE8、Firefoxでは、これは正しく動作します。検索クエリに含まれない行は正しく隠されていますが、IE7では問題が発生します。
jQueryのUIボタンが非表示になっていると思われる行に対して正しく表示されないことがわかります。開発者用ツールを開いて、インラインdiplay:none
のスタイルをオフにして、特定の「非表示」の行を切り替えても、行は正しく表示されません。
私は基本的に私の知恵の終わりです。誰でも何か提案がありますか?
これはすぐに私の問題を解決しました。 –
これは結局私が解決した解決策です。 –