2012-05-01 4 views
-1

Я создаю веб-сайт с навигацией второго уровня с честным ударом разделов и стилей, применяемых к нему. Проблема в том, что есть несколько страниц без дочерних страниц, поэтому subnav пуст и выглядит немного странно.Полностью удалить соответствующую строку из HTML

Мне не удалось найти простой скрипт для удаления html.

Это код, который я хочу, чтобы удалить:

<div class="sub_nav"><div class="track_nav_style_1"> 
<div class="track_nav_links"> 
<ul></ul> 
</div> 
</div></div> 
+4

Что вы подразумеваете под "сценарий"? Почему вы создаете навигационный div второго уровня, если нет дочерних страниц? Неловко сначала создать пустой div, а затем удалить его. –

+0

Спасибо, сайт имеет несколько тысяч страниц, многие из которых имеют дочерние страницы, многие из которых этого не делают. У нас нет ресурсов для определения того, какие из них делают или нет, и есть один файл анализа синтаксиса html. Неуклюжий вариант - лучший пример для нас в этом случае, как если бы сценарий не запускался, худшее, что может случиться, - это пустой серый div, расположенный в верхней части страницы. Система, которую мы имеем, не является надежной и выплевывает меню HTML, есть ли элементы для списка или нет. Кроме того, по сценарию я имею в виду загружаемый javascript. Спасибо. –

+0

Можете ли вы использовать JS или jQuery для проверки каждого элемента 'ul', а если он пуст, удалите родителя? – Shomz

ответ

0

Я действительно надеюсь, что я прав, и если да, то я предлагаю использовать простой сценарий jQuery. Включите в свой раздел <head>.

<script type="text/javascript" src="http://www.google.com/jsapi"></script> 
<script language="javascript" type="text/javascript"> 
    google.load('jquery', '1.7.1'); 
</script> 

Следующий скрипт удалит <ul> контейнер, если нет нет <li> ниже.

if ($('.track_nav_links ul li').length == 0) 
     $('.track_nav_links ul').remove(); 
+0

Если вы заставляете кого-то включать jQuery, по крайней мере, предлагайте скрипт jQuery, который не является кровавым неэффективным. – kapa

+0

@ bažmegakapa точка взята, глупо копируется с сайта jquery.com. Ответ теперь отредактирован, чтобы отразить это. – itayw

+0

Я не говорю о включении кода, но ваш код. Почему вы запускаете почти тот же селектор дважды? В более крупном DOM это может стать довольно дорогостоящим. Если вы представляете jQuery кому-то, попробуйте познакомиться с ноу-хау. Этот код именно поэтому некоторые люди ненавидят jQuery. – kapa

1

Я хотел бы попробовать сделать это с помощью CSS. Что-то вроде:

.track_nav_links ul{ 
    padding: 0; 
    height: auto; 
    /* background styles and others can be applied, but won't be visible unless the list has content */ 
} 

.track_nav_links ul li{ 
    /* Use the css on these elements to determine height, style etc */ 
} 
+0

Благодарим вас за ответ, div оформлен на заданной высоте с границами и фоном, поэтому CSS не будет работать в этом случае. Но спасибо, что нашли время ответить на мой вопрос. –

-1

Вот скрипт Python:

импорт ОС

snippet = """<div class="sub_nav"><div class="track_nav_style_1"> 
<div class="track_nav_links"> 
<ul></ul> 
</div> 
</div></div>""" 

def remove_code_snippet_from_file(file_name): 
    f = open(file_name, 'r+') 
    old_code = f.read() 
    f.close() 
    f = open(file_name, 'w') 
    f.write(old_code.replace(snippet, '')) 
    f.close() 

if __name__ == "__main__": 
    for file_name in os.listdir(os.getcwd()): 
     if file_name.endswith('.html'): 
      remove_code_snippet_from_file(file_name) 
+0

Откуда вы знаете, что он использует Python? – kapa

+0

Я не знаю, что он использует Python. Спасибо, что подняли это. –

+0

Hey mate спасибо за ответ, к сожалению Python не годится для меня, но спасибо за ваше время. –

Смежные вопросы