1

好的首先这是我的第一篇文章,所以我首先为我可能犯的任何“新手”错误道歉。我将尽可能详细并尽可能地进行布局。

我在做什么:

创建供公司内部使用的 Chrome 应用程序。

问题:

通过包含来自加载的 ajax 调用的完整 HTML 数据的 Ajax 调用进行解析:

我无法访问的内容:

基于服务器的 PHP 或 MYSQL。

我可以访问的内容:

包含我需要循环的数据的所有页面的完整 html 数据,以及通过 put 和 get 将新数据发布到服务器。

应用程序已设置访问跨域数据的权限,因此我不会遇到 ajax 问题和它跨域策略。对于我需要提取的页面,所有数据都成功提取。

我正在使用什么:Jquery Javascript 用于可能支持或不支持的内容,或者我对 J Query 缺乏了解,因为它非常强大并且仍在尝试掌握不同的可用 API。

问题:

我能够使用我需要的 html 数据加载 ajax 数据。我已经列出了在我使用 Jquery“查找”在我最初使用 ajax 进行的调用的 html 中定位 tbody 以及到目前为止我过滤掉的内容之后 html 的外观。我还将它打印到 chrome 控制台中的 consol.log(variablename) 。我在代码下方列出了我对这些数据的目标。我不担心跨浏览器兼容性,因为这将是一个仅限 chrome 的应用程序,其他浏览器不会使用该代码。

<tbody>
<tr>
<td><strong>Header 1</strong></td>
<td><strong>Header 2</strong></td>
<td><strong>Header 3</strong></td>
<td><strong>Header 4</strong></td>
<td><strong>Header 5</strong></td>
<td><strong>Header 6</strong></td>
<td><strong>Header 7</strong></td>
</tr>
<tr >
<td>image location link</td>
<td>another link</td>
<td>Product</td>
<td>New</td>
<td></td>
<td>date</td>
<td></td>
<td>another link to an account</td>
</tr>
<tr>
<td>image location link</td>
<td>another link</td>
<td>Product2</td>
<td>New</td>
<td></td>
<td>date</td>
<td></td>
<td>another link to an account</td>
</tr>
<tr>
<td>image location link</td>
<td>another link</td>
<td>Product</td>
<td>old</td>
<td></td>
<td>date</td>
<td></td>
<td>another link to an account</td>
</tr>
</tbody>

目标:上面的 Tbody 将列出更多的 tr,但它是可用的示例。我每次都需要解析数据并找到每个 tr 与包含相同产品类型的 td 和列出“新”的 td。

我非常感谢你们在这方面的帮助,并期待听到你们的回应。

我尝试使用 Jquery:

尝试使用包含和每个循环来创建一个新的数据对象。与其提供一些写得很糟糕的代码哈哈,我想如果有人可以提供一些很棒的框架代码,如果可能的话,这将帮助我更上一层楼。

提前致谢!

4

1 回答 1

1

因此,您可以找到新的或查找或旧的并摆脱旧的。由你决定。

这是另一个提供第二个表的更新。这应该让你开始。基本上它会跳过第一个“tr”,因为那是标题,并找到在 4 位置具有 New 的其余部分。Closest 遍历 dom 到第一个父级。

http://jsfiddle.net/JzUrq/2/

var data = $("#holder").html();

$("#newTable").append($(data).find("tr:eq(0)"));

$(data).find("tr:gt(0) :nth-child(4):contains('New')").closest('tr').each(function(index){
    var row = "<tr>"+$(this).html()+"</tr>";
    $("#newTable").append(row);
});

您可以做的其他事情是将 html 设置为整个表格并简单地隐藏旧的任何内容。

于 2013-01-31T01:25:05.300 回答