如何使用Mojolicious删除所有选定的DOM元素?

时间:2014-08-27 21:25:09

标签: perl mojolicious

我正在尝试从具有Mojolicious的表中删除第一列(通常是第n列)。 我目前这样做:

$table->find('td:first')->each(sub { my ($e) = @_; $e->remove });

但这不起作用。

我做错了什么?

(是的,我知道我在Mojolicious上问了很多问题 - 刚刚开始,这很酷)

1 个答案:

答案 0 :(得分:0)

:first没有CSS Selector

以下使用:nth-child(1)隔离第一列,然后隔离removes单元格:

也可以使用:first-child:first-of-type等。请务必查看所有可用的不同选择器,以确保哪些选择器最适合您的目的。

use strict;
use warnings;

use Mojo::DOM;

my $dom = Mojo::DOM->new(do {local $/; <DATA>});

$dom->find('tr > td:nth-child(1)')->remove;    

print $dom;

__DATA__
<html>
<head>
<title>Hello Tables</title>
</head>
<body>
<h1>Hello world</h1>
<table>
<tr><td>Row 1 Col 1</td><td>Row 1 Col 2</td><td>Row 1 Col 3</td></tr>
<tr><td>Row 2 Col 1</td><td>Row 2 Col 2</td><td>Row 2 Col 3</td></tr>
<tr><td>Row 3 Col 1</td><td>Row 3 Col 2</td><td>Row 3 Col 3</td></tr>
<tr><td>Row 4 Col 1</td><td>Row 4 Col 2</td><td>Row 4 Col 3</td></tr>
</table>
</body>
</html>

输出:

<html>
<head>
<title>Hello Tables</title>
</head>
<body>
<h1>Hello world</h1>
<table>
<tr><td>Row 1 Col 2</td><td>Row 1 Col 3</td></tr>
<tr><td>Row 2 Col 2</td><td>Row 2 Col 3</td></tr>
<tr><td>Row 3 Col 2</td><td>Row 3 Col 3</td></tr>
<tr><td>Row 4 Col 2</td><td>Row 4 Col 3</td></tr>
</table>
</body>
</html>
相关问题