Это происходит потому, что change()
обработчика будет выполнен только тогда, когда событие изменения увольняет из выбранного элемента. Вы используете console.log()
заявление в последовательном executio, которые будут выполнены до того, как обработчик изменения обжигают
//this is correct
var selectee = "JK";
//this registers a change handler for the select element
$('select.form-control.bfh-states').change(function() {
//but this will not execute now!!! it will get executed only when the select elements change event is fired
selectee = $(this).val();
console.log(selectee); // works correctly, but i need to access it outside the function
});
//this will get executed as soon as the change handler is registered not after the handler is executed
console.log(selectee);
Если вы хотите selectee
иметь значение, выбранное в select
элемента, то вы можете сделать что-то вроде
var selectee = $('select.form-control.bfh-states').val() || "JK";
или вручную сгореть выберите обработчик изменения после того, как обработчик прикрепленная на дом готов, как
var selectee = "JK";
$('select.form-control.bfh-states').change(function() {
selectee = $(this).val();
console.log(selectee); // works correctly, but i need to access it outside the function
}).change();
Код не работает процедурный. selectee будет отображать новое значение только после запуска события изменения выбранного элемента управления. К тому времени должен быть выполнен console.log (selectee). – Chibuzo
Определите, что «все не работает». Предположительно, вы получаете значение * selectee * после изменения выбранного параметра? – RobG
'$ ('select option: selected'). Val();' может просто быть 'this.value'. – RobG