Mail.ruПочтаМой МирОдноклассникиИгрыЗнакомстваНовостиПоискComboВсе проекты

Помогите сделать условие, если select не пустой.

Константин Ефименко Мастер (1505), закрыт 6 месяцев назад
У меня многострочный select, который я наполняю при помощи append(), либо очищаю при помощи remove(). В момент наполнения (или после), все option должны нумероваться через data-* атрибут.

Я делаю это так:
$('.left option').each(function(i){
$(this).attr('data-num', i);
});

Так как, данный способ нумерует только, при загрузки страницы, если просто обвёрнут в $(document).ready(function(){}, то соответственно при добавлении option ничего не происходит.

Помогите сделать условие, если в select есть хотя бы один option, то будет выполняться данная функция.
Дополнен 6 месяцев назад
Я нашёл 2 варианта решения своей проблемы:

1.)
$(document).on("DOMNodeInserted", ".left option", function() {
$('.left option').each(function(i){
$(this).attr('data-num', i);
});
});
Но это происходит слишком медленно, так как срабатывает в момент добавления.

2.)
function DataTime() {
$('.left option').each(function(i){
$(this).attr('data-num', i);
});
}
$(function(){
var int = setInterval(DataTime, 1000);
});

Но данный способ, всё ещё вызывает у меня смутные сомнения. Что если бы, я вывел тысячу строк и все они постоянно пронумеровывались.
Дополнен 6 месяцев назад
Оба решения совершенно не годятся, так как нужно нумеровать единожды, после обновления списка в select. То есть, после нумерации, data-* атрибут должен оставаться статичным и обновляться только после remove().
Лучший ответ
Дед Мазай Просветленный (36386) 6 месяцев назад
https://jsfiddle.net/pmjcazs9/
Лучше сначала нажать кнопку "посчитать", потом "заполнить", потом опять "посчитать". Далее можно опять нажать "заполнить" и "посчитать".
Но как я писал в другом ответе, нет смысла проверять пустой список или нет. Пустой список обновляется так же быстро как проверка списка на пустоту.
Остальные ответы
WebProfit inc. Просветленный (24520) 6 месяцев назад
Комментарий удален
Дед Мазай Просветленный (36386) "при добавлении option ничего не происходит" Когда добавляешь option, добавляй атрибут. В чём проблема?
Похожие вопросы
Также спрашивают