2016-07-11 5 views
1

Я пытаюсь запустить jquery из моего модального окна, но, похоже, он ничего не делает. Вот мой JQuery:Запуск jquery изнутри мода

$('select').on('change', function() { alert(this.value); })

Код должен предупредить браузер, что выпадающий список был изменен, когда он меняется.

Мои выпадающие генерируются на основе результатов таблицы SQL, как так

<div class="input-group"> 
    <span class="input-group-addon" id="sizing-addon1"><?=$value[1];?></span> 
    <select id="myChange" name="goneTeammates[<?=$uniqueLoop;?>]" class="myChange form-control"> 
     <option class="white" value="">Attended</option> 
     <option class="red" value="<?=$value[0];?>|A">Absent</option> 
     <option class="blue" value="<?=$value[0];?>|V">Vacation/Holiday</option> 
    </select> 
</div> 

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

P.S Я знаю, что jQuery запущен, потому что выпадающие списки видны в модальном окне, которое работает правильно.

У меня нет ошибок на консоли.

+0

Является ли модальный шаблон шаблоном где-нибудь или он уже на странице? Возможно, выбор не существует для $ ('select') для подключения. – Zach

+0

@ Zach существует на той же странице. Фактически, он существует прямо там, где функция загрузки для модала, которая, как я знаю, работает явно. – GrumpyCrouton

+0

Для здравого смысла - перейдите и измените селектор на $ ('# myChange') и посмотрите, не изменилось ли это. – Zach

ответ

1

элементы еще не существует, когда эта линия запускается на выполнение

попробовать

$(document).on('change', 'select', function(){ 
     alert (this.value); 
    }); 

и если вы собираетесь просто бросить его на документе или что-то в этом роде, попытаться использовать более конкретные класс для селектора и очистите событие, прежде чем осматривать их. Это предотвращает дублирование обработчика и заканчивается сумасшедшим, если этот код запускается более одного раза. Будет выглядеть примерно следующее:

$(document).off('change', '.myCoolSelect'); 
    $(document).on('change', '.myCoolSelect', function(){ 
     alert (this.value); 
    }); 

Но вам не нужно использовать документ. Любой родительский узел, который, как вы знаете, будет существовать, вы можете добавить обработчики.

+0

Это сработало. Спасибо. Не могли бы вы немного объяснить, что это на самом деле, поскольку я никогда не видел, чтобы это использовалось раньше. – GrumpyCrouton

+0

его вид, как Зак сказал выше. Когда ваша строка выполняется, элемент не находится в dom. Вы, вероятно, присоедините его к дому позже через любую модальную вещь, которую вы используете – jumpdart

Смежные вопросы