Есть строка - html список: HTML: <ul> <li class="del">Категория <ul> <li></li> <li></li> </ul> </li> <li></li> <li></li> <li></li> </ul> Есть вложенные... Некоторые элементы имеют class="del" Можно как нибудь вырезать блоки с классом "del" Спасибо.
Код (Javascript): var liDel = document.querySelector('li.del'); liDel.forEach(function(el){ el.remove(); }) --- Добавлено --- это на javascript
На JavaScript без проблем, именно в php строке нужно. Есть метод который формирует дерево категорий: PHP: public function render() { $level = 0; $menu = ''; $level_start = $this->conf['data'][0]->lvl; foreach($this->conf['data'] as $key => $category) { switch($category->lvl) { case($category->lvl == $level) : $menu .= '</li>' . PHP_EOL; break; case($category->lvl > $level) : $class_ul = $level == $level_start ? 'main-menu' : 'sub-menu'; $menu .= '<ul class="' . $class_ul . '">'; break; case($category->lvl < $level) : $menu .= '</li>' . PHP_EOL; for($i = $level - $category->lvl; $i; $i--) { $menu .= '</ul>' . PHP_EOL; $menu .= '</li>' . PHP_EOL; } break; } // $menu .= '<li>'; $menu .= '<a href="#">' . $category->title . '</a>'; $level = $category->lvl; } for($i = $level + 1; $i > $level_start; $i--) { $menu .= '</li>' . PHP_EOL; $menu .= '</ul>' . PHP_EOL; } return $menu; } Мне нужно либо в этом методе на ходу (подменять / удалять) некоторые элементы, либо уже в результате разбирать строку и менять. В самой функции уже 2 день парюсь и ни как не получается толком сделать.
Это я опустил, но в том то и дело - где вставить проверку (if($category->repace == 1){...}) что бы можно было по ходу обхода, <li> с классом del = вырезать или при необходимости заменить на другой кусок списка - уже сформированного html.
Зачем удалять если можно не вставлять. При выполнении вашего условия (как вы сейчас класс del проставляете) переходите на следующую итерацию, то тех пор пока не встретит элемент того же уровня в дереве или выше.
Да в то то и дело что не выходит так, я два дня и та сяк вертел, если покажите как - буду благодарен.