Функция `sortable` может не работать корректно при использовании внутри `setTimeout` по нескольким причинам. Давайте рассмотрим возможные факторы:
1. **Контекст `this`**: При использовании `setTimeout` контекст `this` не сохраняется, если вы обращаетесь к нему напрямую. Вы можете потерять ссылку на родительский объект, и поэтому `this.$question` может быть неопределенным в момент вызова. Чтобы избежать этого, вы можете использовать стрелочную функцию или сохранить контекст в переменной:
```javascript
const self = this; // Сохраняем контекст
setTimeout(function() {
self.$question.sortable('enable');
}, 1000);
```
Либо использовать стрелочную функцию:
```javascript
setTimeout(() => {
this.$question.sortable('enable');
}, 1000);
```
2. **Состояние элемента**: Возможно, что в момент вызова метода `sortable('enable')` элемент не находится в том состоянии, когда его можно активировать. Например, если элемент скрыт, отключен или находится в процессе обработки другого события, `sortable` может не сработать.
3. **События**: Убедитесь, что события `mousedown` и `touchstart` обрабатываются корректно и не блокируются другими обработчиками событий. Если событие обрабатывается и предотвращает дальнейшее выполнение (например с помощью `event.preventDefault()`), это может помешать запуску `setTimeout`.
4. **Перезапись состояния**: Если у вас есть другие `setTimeout` или функции, которые работают с `sortable`, возможно, что ваше значение состояния перезаписывается до того, как срабатывает таймер.
5. **Ошибки в коде**: Проверьте, нет ли других ошибок в коде, которые могут останавливать выполнение. Используйте `console.log` для отладки и убедитесь, что код внутри `setTimeout` действительно выполняется.
Если эти пункты не помогают, предоставьте больше деталей о вашем коде, чтобы можно было рассмотреть ситуацию более детально.