#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();