Поиск потомков
Здараствуйте.
Каким образом можно найти элементы 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, время: 07:21. |