Поиск потомков
Здараствуйте.
Каким образом можно найти элементы DOM у которых внутри нет нечего кроме текста? Пример <table> <tr> <td>Текст1</td> <td>Текст2</td> </tr> <tr> <td>Текст3</td> <td>Текст4</td> </tr> </table> нужно достать: <td>Текст1</td> <td>Текст2</td> <td>Текст3</td> <td>Текст4</td> Уровни вложенности заранее неизвестны как и теги ну в общем как то так):help: |
Первоя что перешило в голову это селектор :not(:has(*))
|
mrDach,
дополненный вариант danik.js,
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<table>
<tr>
<td>Текст1</td>
<td>Текст2</td>
</tr>
<tr>
<td>Текст3</td>
<td>Текст4</td>
<td>
</td>
</tr>
</table>
<script>
var div = $("<div/>");
$(":not(:has(*), script)").each(function (index, self) {
/\S/.test($(self).text())&& div.append($(self).clone())
});
alert(div.html());
</script>
</body>
</html>
|
Улучшенный селектор: body :not(:has(*), :empty)
Однако элемент только с пробелами не считается пустым. Также в выборку не попадут элементы со скриптами или стилями внутри. Чтобы это учесть, можно попробовать body :not(:has(:not(style, script, meta, link)), style, script, :empty). Если все элементы заведомо видимы, то можно упросить до body :not(:has(:visible), :hidden, :empty). Производительность будет хреновой. Тем более что селектор нестандартный, поэтому выборка будет обрабатываться javascript'ом. |
Все проблема решена спасибо большое:) :dance: :dance: для решения использовал ":not(:has(*), script)" но и body :not(:has(*), :empty) тоже пашет, спасибо вам. всем по плюсику:victory:
|
| Часовой пояс GMT +3, время: 03:31. |