Удалите все Ul, которые не содержат пользовательский атрибут - PullRequest
0 голосов
/ 22 марта 2012

Я хочу удалить только те ul с li, у которых нет настраиваемого атрибута.Я пытался это

$myParent.children('li ul:not("ul[isClicked=True]")').remove();

, но не могу заставить его работать.Любая помощь будет оценена.

1 Ответ

1 голос
/ 22 марта 2012

Если я правильно вас понимаю, вы хотите удалить ul s, которые содержат li s с атрибутом isClicked = "True":

$myParent.find("li[isClicked=True]").parent("ul").remove();

Обратите внимание, чтоатрибут должен содержать слово "True";это строка, а не логическое значение.

Живой пример

Из вашего комментария ниже:

Я ищу порок-верса на самом деле.Удалите все ul, у которых нет настраиваемого атрибута.

Это противоположно открытому предложению вашего вопроса ( "Я хочу удалить только те ul с li, которые имеют настраиваемый атрибутна нем ").:-) Вот как вы это сделаете, если предположить, что элементы ul являются прямыми потомками $myParent (ваш пример кода предлагает это);если это не так, просто измените .children в первой строке на .find:

$myParent.children("ul").each(function() {
  var $ul = $(this);
  if (!$ul.find("li[isClicked=True]")[0]) {
    // Doesn't have one, remove it
    $ul.remove();
  }
});

Живой пример


FWIW, этот атрибутимя не будет проверять .Вы могли бы рассмотреть возможность перехода к атрибуту data-* .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...