Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.08.2017, 04:24
Аспирант
Отправить личное сообщение для jay-S Посмотреть профиль Найти все сообщения от jay-S
 
Регистрация: 05.10.2011
Сообщений: 76

Работа с деревом видимо
Уважаемые вообще не знаю как сформулировать вот сразу к делу

<div class="block1">

<div class="block2_1">
</div>
<div class="block2_2">

<div class="block1">

<div class="block2_1">
</div>
<div class="block2_2">

<div class="block1">

<div class="block2_1">
</div>
<div class="block2_2">
</div>

</div>

</div>

</div>

</div>

</div>


$('.block1').each(function() {
var data1 = $(this).find('.block2_1').html(),
data2 = $(this).find('.block2_2').html();
$(this).replaceWith('<div></div>');
});



в чем проблема?
во-первых find ищет все совпадения этого класса, а нужно только внутри каждого блока

смысл в том чтобы была большая вложенность, но данные получались внутри каждого блока

и replaceWith заменяет сразу главный блок и все

я так понимаю нужно чтобы он изнутри делал чтобы replaceWith не заменял все??

вообщем знатоки подумайте скажите пожалуйста как сделать?
Ответить с цитированием
  #2 (permalink)  
Старый 31.08.2017, 08:55
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от jay-S
в чем проблема?
Пока так и не понятно...

Что ты хочешь в итоге с этим хтмэлем сделать?
Ответить с цитированием
  #3 (permalink)  
Старый 31.08.2017, 08:59
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от jay-S
во-первых find ищет все совпадения этого класса, а нужно только внутри каждого блока
Так используй children()
https://jquery-docs.ru/children/
Ответить с цитированием
  #4 (permalink)  
Старый 31.08.2017, 13:59
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Не совсем понял, но
<div class="block1">
   <div class="block2_1">
   </div>
   <div class="block2_2">
      2_2_1
      <div class="block1">
         <div class="block2_1">
         </div>
         <div class="block2_2">
            2_2_2
            <div class="block1">
               <div class="block2_1">
               </div>
               <div class="block2_2">
               2_2_3
               </div>
           </div>
         </div>
      </div>
   </div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
var reverseBlock = $(".block1").get().reverse();
$(reverseBlock).each(function() {
   var  data2 = $(this).find('.block2_2').text();
   alert(data2);
   $(this).replaceWith('<div></div>');
});
</script>

Последний раз редактировалось Dilettante_Pro, 01.09.2017 в 13:56.
Ответить с цитированием
  #5 (permalink)  
Старый 01.09.2017, 02:01
Аспирант
Отправить личное сообщение для jay-S Посмотреть профиль Найти все сообщения от jay-S
 
Регистрация: 05.10.2011
Сообщений: 76

Вот хороший пример
<div class="block1">
<div class="block2">sample text</div>

<div class="block3">
<div class="block1">
<div class="block2">sample text</div>

<div class="block3">
<div class="block1">
<div class="block2">sample text</div>

<div class="block3">
<div class="block1">
<div class="block2">sample text</div>

<div class="block3">
<div class="block1">
<div class="block2">sample text</div>

<div class="block3">
</div>

</div>
</div>

</div>
</div>

</div>
</div>


$('.block1').each(function() {
var data1 = $(this).find('.block2').text();
alert(data1);
});


как видно в примере он берет каждый block1 и выводит что содержится в block2
и самое интересное он берет по цепочки короче смысл в том как изолировать блок который он проверяет и чтобы find не брал все классы ну вы понимаете меня?

тоесть он инфу в блоке .text берет вообще все проверьте через алерт

потом когда цепочка блока block1 уменьшается инфы меньше короче как изолировать чтобы вот он проверел в своем block1 и нелез дальше?
Ответить с цитированием
  #6 (permalink)  
Старый 01.09.2017, 06:18
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

$('.block1 .block2').each(function() {
    var data1 = $(this).text();
    alert(data1);
});
Ответить с цитированием
  #7 (permalink)  
Старый 01.09.2017, 06:33
Аспирант
Отправить личное сообщение для jay-S Посмотреть профиль Найти все сообщения от jay-S
 
Регистрация: 05.10.2011
Сообщений: 76

Белый шум а если мне внутри данные с нескольких блоков нужно собрать, то для каждых писать each?

нельзя сделать что-то типа var data1 = .find и указать типа > я хз чтобы он не ел другие блоки?
Ответить с цитированием
  #8 (permalink)  
Старый 01.09.2017, 07:26
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

Через запятую можно перечислять селекторы, как и в css:
$('.block1 .block2, .block1 .block3, .block1 .block4').each(function() {
    var data1 = $(this).text();
    alert(data1);
});
Ответить с цитированием
  #9 (permalink)  
Старый 01.09.2017, 07:42
Аспирант
Отправить личное сообщение для jay-S Посмотреть профиль Найти все сообщения от jay-S
 
Регистрация: 05.10.2011
Сообщений: 76

я имею ввиду можно както указать find'у чтобы он не собирал все что найдет а только первый попавшийся в своем боксе
Ответить с цитированием
  #10 (permalink)  
Старый 01.09.2017, 08:27
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от jay-S
можно както указать find'у чтобы он не собирал все что найдет а только первый попавшийся
Всегда можно после find() указать eq(0)...
https://jquery-docs.ru/eq/
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вакансия: Программист IOS, работа в офисе,г.Ростов-на-Дону Анна NikitaOnline Работа 0 21.03.2016 18:45
Работа с деревом Jstree ylibka jQuery 0 19.02.2014 16:52
Постоянная работа / Front-end / Москва kooper Работа 4 29.09.2011 22:06