У меня есть выпадающее меню, которое инициализируется программно, используя jquery.val(). Для этого элемента есть событие изменения, которое должно работать по-разному в зависимости от того, изменяется ли пользователь или изменяет его программно через $ select.val(). Каков наилучший способ достичь этого?
$select.change(function() {
// always execute:
...
// don't execute on .val(): [how to check this?]
...
});
Вы всегда можете использовать стандартную функцию addEventListener для элемента DOM, которая не будет срабатывать, когда вы используете функцию jquery val для установки значения.
document.getElementById('myOption').addEventListener('change', function(){
alert('value changed by user to: ' + this.value);
});
Теперь даже если вы используете jquery для изменения значения $('#myOption').val(3)
он не инициирует событие.