Jquery Как включить функцию без указания событий в списке - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть список предметов, которые можно удалить, нажав.

Мне нужно, чтобы первый элемент был выделен, только когда в списке есть один элемент. Я пытался сделать это с помощью события click. Однако возможно ли это сделать без .click ()? (или каких-либо других событий). Причина в том, что этот список динамически взаимодействует с другими списками, которые элемент списка может изменить другими функциями.

Другими словами, список динамически изменяется, может jquery продолжать проверять, есть ли в списке только один элемент (без указания указанного c триггера события)?

<ul id="container">
<li>1</li>
<li class="fixed">2</li>
<li>3</li>
<li class="fixed">4</li>
<li>5</li>
</ul>

$('#container').delegate('li', 'click', function() {
  $(this).remove();
});


$('#container').click(function(){
  if ($('#container').children().length == 1) {
    $("#container li:first-child" ).css( "background-color", "#fff2ac" );
  }
}

1 Ответ

1 голос
/ 17 апреля 2020

Вы можете сделать это исключительно с помощью CSS с правилом, которое проверяет, является ли li одновременно :first-child И :last-child -

.container li:first-child:last-child {
  background-color: red;
}
<h5>List With Many Items</h5>
<ul class="container">
  <li>1</li>
  <li class="fixed">2</li>
  <li>3</li>
  <li class="fixed">4</li>
  <li>5</li>
</ul>

<h5>List With One Item</h5>
<ul class="container">
  <li>1</li>
</ul>


<h5>List With Two Items</h5>
<ul class="container">
  <li>1</li>
  <li class="fixed">2</li>
</ul>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...