Скрыть div, если идентификатор li пуст

#javascript #html #jquery #css

#javascript #HTML #jquery #css

Вопрос:

Мне нужно скрыть div , если li он пустой

 <div>
  <ul>
   <li id=“item1”></li>
   <li></li>
   </ul>
</div>

$(document).ready(function () {
$(‘#div’).onchange(function() {
    if (‘#div’).text === ‘’) {
   $(‘li#item1).hide();
} else {
   $(‘li#item1).show();
});
  

Если пользователь меняет свой возраст, в списке отображаются разные элементы. Мне нужно скрыть div, если li в списке пусты. Итак, если пользователь изменяет свой выбор, как мне перезагрузить функцию onchange?

  $(document).ready(function () {
   $(‘#div’).filter(function() {
    if (‘li#item1’).text.change === ‘’) {
    $(‘#div’).hide();
    } else {
    $(‘#div’).show();
  }); 
  

Не уверен, могу ли я отфильтровать функцию .change?

 $(document).ready(function ({
   $('body').change(function() {
   if ($(li#item1).text(); !== '') {
   $(#div’).hide();
    } else {
   $(#div’).show();
  }) 
});
  

Будет ли что-то подобное работать?

Комментарии:

1. Проверьте ошибку, выданную в консоли инструментов разработчика браузера. Метода jQuery нет onchange , и вы должны увидеть сообщение об ошибке. Также нет события изменения на <div>

2. В jQuery нет onchange() метода; возможно, вы имели в виду, что type [ change()](https://api.jquery.com/change/), which does exist, but why do you believe your <div>` будет когда-либо запускать или обнаруживать change событие, поскольку внутри нет элементов формы или входных данных? Кроме того, у вас недопустимый HTML, поскольку an <li> должен быть дочерним элементом <ul> элемента или <ol> .

3. Итак, что бы я рекомендовал использовать, если нет onchange, если пользователь изменяет свой выбор и ему нужно снова перезагрузить функцию?

Ответ №1:

Вы используете типографские символы кавычек повсюду в своем коде ( ‘’ и “item1” т.д.) — Это не сработает. Измените все эти кавычки на «простые» кавычки. Кроме того, в вашем условии if / else в selectors ( $('li#item1')... ) отсутствует закрывающая кавычка. Кроме того, наличие a li в качестве дочернего элемента a div является недопустимым HTML. И onchange() в jQuery нет метода…

Ответ №2:

Конечно, это не сработает. Событие onchange() — в javascript (в jQuery это change()) работает только в элементе select, input и text area, а не в div: введите описание изображения здесь

Комментарии:

1. Могу ли я использовать .change вместо .onchange?

2. Как я уже сказал, событие change() работает только в элементах ввода, выбора и текстовой области, а не в div! Итак, ответ отрицательный — он все равно не работает!

3. @Az3492 я думаю, вы можете использовать другой подход. Как я понимаю, вы используете jQuery для изменения содержимого элементов списка и хотите скрыть элемент списка с пустым содержимым, верно? В этом случае вы можете создать функцию, например hideEmpty(), чтобы скрыть пустые элементы списка. И каждый раз, когда вы вносили изменения в содержимое списка — вызывайте hideEmpty() , следуйте вместе с!

4. У вас есть пример?

5. @Az3492 это мой пример для функции hideEmplty: function hideEmpty(){ var items = $('#div_ID li'); for (let i = 0; i<= items.length; i ){ $(items[i]).show(); if($(items[i]).text() === ''){ $(items[i]).hide(); } } } и после того, как вы перейдете к любому элементу списка, просто вызовите эту функцию, например: $('#li_01").text('What ever'); hideEmpty();