2014-08-27 3 views
0

Я пытаюсь удалить первый столбец (и вообще n-й столбец) из таблицы с Mojolicious. я в настоящее время сделать это следующим образом:Как удалить все выбранные элементы DOM с помощью Mojolicious?

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

, но это не работает.

Что я делаю неправильно?

(Да, я знаю, что я задаю много вопросов по Mojolicious - только начинается, и это довольно круто)

ответ

0

Там нет CSS Selector для :first.

Следующая использует :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> 
+0

CSS2 имеет [ 'первый-child' псевдо-класс] (http://www.w3.org/TR/CSS2/selector.html#first-child) – Borodin

+0

Да, я упомянул и связался с этим в своем третьем предложении. «Первый», который он использовал, я подозревал, был выведен из вызова метода, доступного в «Mojo :: DOM», и, следовательно, на самом деле не является CSS-селектором, как он его использовал. – Miller

Смежные вопросы