Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.02.2013, 06:01
Новичок на форуме
Отправить личное сообщение для mrDach Посмотреть профиль Найти все сообщения от mrDach
 
Регистрация: 26.02.2013
Сообщений: 2

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

Уровни вложенности заранее неизвестны как и теги
ну в общем как то так)
Ответить с цитированием
  #2 (permalink)  
Старый 26.02.2013, 07:23
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Первоя что перешило в голову это селектор :not(:has(*))
Ответить с цитированием
  #3 (permalink)  
Старый 26.02.2013, 11:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

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>
Ответить с цитированием
  #4 (permalink)  
Старый 26.02.2013, 11:33
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Улучшенный селектор: body :not(:has(*), :empty)
Однако элемент только с пробелами не считается пустым. Также в выборку не попадут элементы со скриптами или стилями внутри. Чтобы это учесть, можно попробовать body :not(:has(:not(style, script, meta, link)), style, script, :empty). Если все элементы заведомо видимы, то можно упросить до body :not(:has(:visible), :hidden, :empty). Производительность будет хреновой. Тем более что селектор нестандартный, поэтому выборка будет обрабатываться javascript'ом.
Ответить с цитированием
  #5 (permalink)  
Старый 26.02.2013, 16:14
Новичок на форуме
Отправить личное сообщение для mrDach Посмотреть профиль Найти все сообщения от mrDach
 
Регистрация: 26.02.2013
Сообщений: 2

Все проблема решена спасибо большое для решения использовал ":not(:has(*), script)" но и body :not(:has(*), :empty) тоже пашет, спасибо вам. всем по плюсику
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
.hide() для всех потомков и их потомков sholkyman jQuery 1 15.06.2011 12:45
Поиск в тексте javascript jQuery 3 31.05.2011 11:40
PagingToolbar и поиск DenQ ExtJS 5 02.11.2010 00:16
Поиск слова в исходном коде html страницы klsorat2010 Ваши сайты и скрипты 1 20.05.2010 23:46
Поиск в массиве через JavaScript Noran Общие вопросы Javascript 0 10.08.2008 17:31