jQuery: поиск и скрытие ссылки на одного родителя в меню вложенного списка в Div - с помощью contains (); - PullRequest
0 голосов
/ 27 марта 2012

У меня есть сайт, на котором CMS имеет очень ограниченное управление меню.Поэтому я пытаюсь обойти эти проблемы с помощью jQuery, чтобы отобразить меню так, как я хочу.Я знаю, что он все еще будет в HTML, но до тех пор, пока он будет отображаться так, как я хочу, все будет хорошо (по крайней мере, для моих стандартов).

Данное меню в настоящее время выглядит примерно так.

<div id="sidemenu">
    <ul>
        <li class="childlist">
                    <a href="#">GET RID OF THIS PARENT</a>
                        <ul>
                           <li>Show this</li>
                           <li>Show this</li>
                           <li>Show this</li>
                        </ul>
        </li>
    </ul>
</div>

Я достиг того, что хочу, с помощью простого $ ('a: contains (GET RID OF THAR PARENT)'). Hide ();однако меню тянется в двух местах, и я хочу скрыть только одно в div бокового меню.

Я пробовал этот подход:

$side = $('#sidemenu');
$hidethis = $('$side:contains('GET RID OF THIS PARENT')');
$hidethis.hide();

Но это приводит к сбою страницы (яя пытался найти решение в консоли в Chrome)

Я буду первым, кто признает, что мой javascript ужасен, поэтому любая помощь будет хорошо принята.

Спасибо завперед.

Ответы [ 3 ]

0 голосов
/ 27 марта 2012

попробуйте это:

jQuery("#slidemenu").find("a:contains('GIT RID OF THIS PARENT')").hide();

Найти первый экземпляр ...

jQuery("#slidemenu > .childlist:first").find("a:contains('GIT RID OF THIS PARENT')").hide();

Цикл для всех детей:

jQuery("#slidemenu").find(".childlist").each(function() {
  var $childListBranch = jQuery(this);
  $childListBranch.find("a:contains('GIT RID OF THIS PARENT')").hide();
});
0 голосов
/ 27 марта 2012

Вам нужно нацелиться на то, что вы хотите скрыть.Например, если вы хотите скрыть ссылку, содержащую текст «избавиться от этого родителя», вы можете настроить таргетинг a:contains.Если вы хотите скрыть своего родителя, вам нужно нацелить #sidemenu:contains на его родителя.Вот пример кода

    //Hide a link
$("a:contains('GET RID OF THIS PARENT')").hide();

    //Hide its parent
$("#sidemenu:contains('GET RID OF THIS PARENT')").hide();

Jsfiddle Demo

0 голосов
/ 27 марта 2012

Ваш код должен выглядеть как ...

$side = $('#sidemenu');
$hidethis = $side.find(':contains('GET RID OF THIS PARENT')');
$hidethis.hide();
...