Javascript.RU

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

contains без учёта предков
День добрый.
Решение простейшей задачи превратилось в бред сивой кобылы в лунную ночь. Гугление не помогло.
Имеется:
Код:
...
<div>
  <div>
    <div>Спам<div>
  <div>
<div>
...
Задача:
Получить "<div>Спам<div>".
Использовал $('div:contains("Спам")'), она конечно же выводит и всех предков, которых десятки. Как поучить только див содержащий нужную строку, или отфильтровать результат contains?
Ответить с цитированием
  #2 (permalink)  
Старый 06.11.2017, 13:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

zxcp,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css"> .red{
      color: #FF0000;
  }

  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function() {
    $('div:contains("Спам")').filter(function() {
 return !$(this).children().length
}).addClass("red")
});
  </script>
</head>

<body>
<div>
  <div> test
    <div>Спам</div>
  </div>
</div>


</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 06.11.2017, 13:59
Профессор
Отправить личное сообщение для Rasy Посмотреть профиль Найти все сообщения от Rasy
 
Регистрация: 17.06.2016
Сообщений: 509

zxcp,
(function(str) {
	var d = document.querySelectorAll('div');

	d = [].filter.call(d, function(elem, indx) {
		return elem.firstChild && elem.firstChild.textContent == str;
	})[0];

	alert(d.textContent);
})('Спам');
Ответить с цитированием
  #4 (permalink)  
Старый 06.11.2017, 14:10
Профессор
Отправить личное сообщение для Rasy Посмотреть профиль Найти все сообщения от Rasy
 
Регистрация: 17.06.2016
Сообщений: 509

Сообщение от zxcp
превратилось в бред сивой кобылы в лунную ночь.
Тэги в дивах не мешало бы закрыть <div></div> 🙉
Ответить с цитированием
  #5 (permalink)  
Старый 06.11.2017, 14:16
Новичок на форуме
Отправить личное сообщение для zxcp Посмотреть профиль Найти все сообщения от zxcp
 
Регистрация: 06.11.2017
Сообщений: 2

рони, спасибо, добрый человек. Один нюанс. Если искомый элемент будет содержать дочерний элемент, скрипт ведь не сработает?

Rasy, :-D. Суровый косяк)) Код не скопирован, а прямо на форуме напечатал. Но мне стыдно)
Ответить с цитированием
  #6 (permalink)  
Старый 06.11.2017, 14:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Сообщение от zxcp
Один нюанс.
...

<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css"> .red{
      color: #FF0000;
  }
  .red > *{
      color: #000000;
  }
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function() {
$('div').contents().filter(function() {
  return this.nodeType == 3 && this.textContent.indexOf('Спам') != -1
})
.parent().addClass("red")
});
  </script>
</head>

<body>
<div>
  <div> test
    <div>Спам <i>test</i></div>
  </div>
</div>


</body>
</html>

Последний раз редактировалось рони, 06.11.2017 в 14:39.
Ответить с цитированием
  #7 (permalink)  
Старый 06.11.2017, 17:01
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

$('div:contains("Спам"):not(:has(*))')
Ответить с цитированием
  #8 (permalink)  
Старый 06.11.2017, 17:10
Профессор
Отправить личное сообщение для Rasy Посмотреть профиль Найти все сообщения от Rasy
 
Регистрация: 17.06.2016
Сообщений: 509

Alexandroppolus,
Спецы пропагандируют реакт, а сами пишут на джиквери?☻
Ответить с цитированием
  #9 (permalink)  
Старый 06.11.2017, 17:12
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Rasy,
увы, по нынешней работе есть куски кода, не самые новые
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск браузера (IE6 и выше) без "офорлмения" - без панелей, меню, строки состояния jett Events/DOM/Window 4 23.11.2011 15:58
$.ajax работает без success но при этом часть кода перезагружается!? saturn Элементы интерфейса 0 16.10.2011 10:09
Get запрос в Greasemonkey без обновления страницы 100matolog Общие вопросы Javascript 1 03.10.2011 04:37
Подскажите как в VLC плеере переключать канал без перезагрузки страницы? mff Events/DOM/Window 0 10.05.2010 17:28
Автообновление <div> без перезагрузки страницы Antihrist AJAX и COMET 14 28.07.2008 06:06