使用jQuery美化别人的html

时间:2020-03-05 18:50:44  来源:igfitidea点击:

我有一个第三方应用程序,该应用程序创建需要显示的基于HTML的报告。我对它们的外观有一定的控制权,但是总的来说,这是非常原始的。我可以注入一些JavaScript。我想尝试向其中注入一些jQuery优点,以便对其进行整理。我想做的一件事是获取一个始终包含一行和可变列数的表(实际的HTML <table>),然后将其神奇地转换为选项卡式视图,其中的内容(总是一个如果有需要,我可以提供一个ID),每个原始表格单元在选项卡式视图中代表一张工作表。我还没有找到像这样的重新父项的任何好(读:简单)示例,所以我不确定从哪里开始。有人可以提供一些有关如何尝试的提示吗?

解决方案

回答

我们可以使用jQuery执行此操作,但可能会使额外的维护工作陷入噩梦。我建议不要这样做/屏幕抓取,因为如果源发生更改,工作也会随之改变。

回答

这听起来确实可行。结合使用jQuery.append和jQuery.fadeIn以及fadeOut,我们应该能够创建一个漂亮的小选项卡式控件。

请参阅JQuery UI / Tab,以简单的方式基于&lt;ul>元素和一组<div>的标签创建一组标签:http://docs.jquery.com/UI/Tabs

回答

给定这样的html页面:

<body><br/>
    <table id="my-table">`<br/>
        <tr><br/>
            <td><div>This is the contents of Column One</div></td><br/>
            <td><div>This is the contents of Column Two</div></td><br/>
            <td><div>This is the contents of Column Three</div></td><br/>
            <td><div>Contents of Column Four blah blah</div></td><br/>
            <td><div>Column Five is here</div></td><br/>
        </tr><br/>
    </table><br/>
</body><br/>

以下jQuery代码将表格单元格转换为选项卡(在FF 3和IE 7中进行了测试)

$(document).ready(function() {
    var tabCounter = 1;
    $("#my-table").after("<div id='tab-container' class='flora'><ul id='tab-list'></ul></div>");
    $("#my-table div").appendTo("#tab-container").each(function() {                    
        var id = "fragment-" + tabCounter;
        $(this).attr("id", id);
        $("#tab-list").append("<li><span><a href='#" + id + "'>Tab " + tabCounter + "</a></span></li>");
        tabCounter++;
    });
    $("#tab-container > ul").tabs();
});

为了使它起作用,我引用了以下jQuery文件

  • jquery-latest.js
  • ui.core.js
  • ui.tabs.js

我引用了flora.all.css样式表。基本上,我从jQuery选项卡示例复制了标头部分

回答

我还建议注入其他样式表,并使用它来显示/隐藏和设置丑陋的元素。

回答

听起来我们对HTML清理不如HTML Tidy感兴趣,但是对静态HTML组件的交互式增强(例如,在选项卡式界面中打开静态表)感兴趣。

这里的一些回复已经给了我们一些提示,例如使用Jquery标签,但我不喜欢其答案中的HTML重写方法。

恕我直言,最好使用JQuery选择器提取所需表单元格的内容,例如:

var mycontent = $('table tr[:first-child]').find('td[:first-child]').html()

那么我们可以通过以编程方式创建标签来将此数据提供给JQuery UI插件:

$('body').append($('<div></div>').attr('id','mytabs'));
$('#mytabs').tabs({}); //specify tab preferences here
$('#mytabs').tabs('add',mycontent);