jQuery - как установить родительский атрибут?

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

Это - код, который я пробую, который не работает...

/* tried this first */
if($('#prevx a').attr('display') == 'none') {
    $(this).parent().attr('display','none');
}

/* and then this */
if($('#prevxa > a').attr('display') == 'none') {
    $('#prevxa').attr('display','none');
}

Разметка похожа на это:

<ul>
   <li class="navnext" id="nextxa">
      <a id="nextx" href="#"><img src="/images/next.png"/></a>
   </li>

   <li class="navprev" id="prevxa">
      <a id="prevx" href="#" style="display: none;"><img src="/images/previous.png"/></a>
   </li>
</ul>
5
задан n00b0101 16 December 2009 в 04:20
поделиться

4 ответа

Попробуйте следующее:

if($('#prevx').css('display') == 'none') {
    $('#prevx').parent().css('display','none');
}

Еще лучше:

$('#prevx').parent().css('display',$('#prevx').css('display'));

Этот пример мне подходит. Чтобы скрыть / отобразить родительский элемент, переключите отображение дочернего элемента между none и inline:

<ul>
   <li class="navnext" id="nextxa">
      <a id="nextx" href="#"><img src="/images/next.png"/></a>
   </li>

   <li class="navprev" id="prevxa">
      <a id="prevx" href="#" style="display: inline;"><img src="/images/previous.png"/></a>
   </li>
</ul>

<script>
if ($('#prevx').css('display') == 'none') 
    $('#prevx').parent().css('display', 'none');
else
    $('#prevx').parent().css('display', 'list-item');
</script>
9
ответ дан 14 December 2019 в 01:09
поделиться

.attr используется для таких тегов, как id, title, alt, src и т. д.

.css используется для CSS стили, такие как display, font, text-decoration: blink и т. д.

Решение Pygorex1 должно помочь.

0
ответ дан 14 December 2019 в 01:09
поделиться
if($('#prevx a').css('display') === 'none') {
    $(this).parent().css('display','none');
}
0
ответ дан 14 December 2019 в 01:09
поделиться

Из примеров кода у вас уже есть идентификатор для родителя, поэтому почему бы не использовать его?

Кроме того, есть много других способов сделать это (оберните строки ниже внутри $ (document) .ready (function () {...}) ), чтобы они работают:

Использование селектора : hidden (это только скроет):

if ($('#prevx').is(':hidden')) $('#prevxa').hide();

Используйте тернарный оператор (это скроет или покажет родителя)

var showOrHide = ($('#prevx').is(':hidden')) ? 'none' : '';
$('#prevxa').css('display', showOrHide);

JQuery использует несколько сокращений:

  • : hidden найдет объекты, которые скрыты (или настроены на отображение: нет). Это не обязательно должно быть внутри . равно () либо. Вы можете использовать это: $ ('div: hidden'). Show () , чтобы показать все скрытые div.
  • : visible найдет объекты, которые не скрыты (display = '', 'inline', 'block' и т. д.)
  • $ (element) .hide () скроет элемент (установит значение none)
  • $ (element) .show () покажет элемент (очищает отображаемое значение)
0
ответ дан 14 December 2019 в 01:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: