Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как айти часть слова и удалить её? (https://javascript.ru/forum/jquery/35590-kak-ajjti-chast-slova-i-udalit-ejo.html)

neutron 15.02.2013 15:19

Как айти часть слова и удалить её?
 
Добрый день.
Столкнулся с задачей, которая казалась мне крайне простой. Но я ошибся:)
Пол дня бьюсь с ней, все мои решения работаю неправильно.
Есть вот такой код.
<div id="block-menu">
      <ul class="menu">
        <li>Категория 1(0)</li>
        <li>Категория 2(18)</li>
		<li>Категория 3(0)</li>
		<li>Категория 5(46)</li>
		<li>Категория 6(0)</li>
      </ul>
</div>

Мне необходимо скрыть (0) с помощью jQuery, чтобы получилось

<div id="block-menu">
      <ul class="menu">
        <li>Категория 1</li>
        <li>Категория 2(18)</li>
        <li>Категория 3</li>
        <li>Категория 5(46)</li>
        <li>Категория 6</li>
      </ul>
</div>


Подскажите пожалуйста, как это можно реализовать?

ksa 15.02.2013 15:30

Цитата:

Сообщение от neutron
необходимо скрыть (0) с помощью jQuery

Как вариант...

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
function hide() {
	$('#block-menu li').each(function (){
		var o=$(this);
		var val=o.text();
		val=val.replace(/\(0\)/gm,'');
		o.text(val);
	});
}
</script>
</head>
<body>
<div id="block-menu">
      <ul class="menu">
        <li>Категория 1(0)</li>
        <li>Категория 2(18)</li>
		<li>Категория 3(0)</li>
		<li>Категория 5(46)</li>
		<li>Категория 6(0)</li>
      </ul>
</div>
<button onclick='hide()'>hide (0)</div>
</body>
</html>

danik.js 15.02.2013 15:36

Не можешь найти корень проблемы? Используй jQuery!
Серверный скрипт штампует лишние (0) - используй jQuery!
Серверный скрипт не помечает меню классов active ? - используй jQuery!
Сервер не имеет скриптовых интерпретаторов? - используй jQuery!

Я люблю jQuery, я люблю новые тенденции :)

neutron 15.02.2013 16:01

Спасибо, в указанном мной варианте работает.
Но я не учел еще и вложенных списков. Если они есть, то всё ломается.

<ul class="menu">
        <li>Категория 1(0)
             <ul class="secondary">
              <li>Подкатегория 1(36)</li>
              <li>Подкатегория 2(18)</li>
              <li>Подкатегория 3(0)</li>
              </ul>
        </li>
        <li>Категория 2(18)</li>
        <li>Категория 3(0)</li>
        <li>Категория 5(46)</li>
        <li>Категория 6(0)</li>
</ul>

рони 15.02.2013 16:08

neutron,
а выборку нужных li никак недобавить?
$('.menu li')

рони 15.02.2013 16:15

neutron,
<!DOCTYPE HTML>
<html>
<head>
 <meta charset="utf-8" />
  <script src="http://code.jquery.com/jquery-latest.js"></script>
  <script type="text/javascript">
$.fn.replaceText = function (e, f, g) {
       return this.each(function () {
           var a = this.firstChild,
               c, b, d = [];
           if (a) {
               do 3 === a.nodeType && (c = a.nodeValue, b = c.replace(e, f), b !== c && (!g && /</.test(b) ? ($(a).before(b), d.push(a)) : a.nodeValue = b));
               while (a = a.nextSibling)
           }
           d.length && $(d).remove()
       })
   };   $(window).load(function () {
   $('.menu li').replaceText( /\(0\)/gi, '' );
    });
  </script>
<title></title>
</head>
<body>
<ul class="menu">
        <li>Категория 1(0)
             <ul class="secondary">
              <li>Подкатегория 1(36)</li>
              <li>Подкатегория 2(18)</li>
              <li>Подкатегория 3(0)</li>
              </ul>
        </li>
        <li>Категория 2(18)</li>
        <li>Категория 3(0)</li>
        <li>Категория 5(46)</li>
        <li>Категория 6(0)</li>
</ul>
</body>
</html>

neutron 15.02.2013 16:44

Спасибо, помогло.
Вопрос исчерпан


Часовой пояс GMT +3, время: 12:26.