I’m upgrading to Metronic 9.x (Tailwind CSS) and trying to initialize a KTSelect on my `<select>` element, but I get:
```
Uncaught TypeError: KTSelect.getOrCreateInstance is not a function
```
**Example markup:**
```html
<select
id="districtSelect"
class="kt-select"
data-kt-select="true"
data-kt-select-placeholder="Seçiniz"
data-kt-select-multiple="true"
data-kt-select-config='{
"optionsClass": "kt-scrollable overflow-auto max-h-[250px]"
}'>
</select>
```
**Initialization code:**
```js
const districtEl = document.querySelector("#districtSelect");
var districtSelect = KTSelect.getOrCreateInstance(districtEl, {
placeholder: 'Åehir seçiniz',
enableSearch: true,
searchPlaceholder: 'Ara...'
});
```
**What I’ve tried:**
* Inspected `core.bundle.js` and confirmed that `KTSelect` is defined but does not expose `getOrCreateInstance` (unlike `KTModal`).
* Manually calling `new KTSelect(districtEl, …)` works as expected.
* Checked that I’m using the demo-6 assets for Metronic 9.x.
**Questions:**
1. Does Metronic 9.x include a static `KTSelect.getOrCreateInstance` method?
2. If not, what’s the recommended way to add “get or create” behavior to KTSelect?
3. Is there a simpler alternative to ensure I don’t accidentally re-initialize an existing instance?
Any guidance on how to resolve this or best practice for managing KTSelect instances would be greatly appreciated.
Hi
KTSelect attaches its instance to the DOM element as `element.instance`.
Best practice:
- Before creating a new instance, check if `element.instance` exists and is a `KTSelect` instance.
- If not, create a new one.
Example:
const districtEl = document.querySelector("#districtSelect");
let districtSelect = districtEl.instance;
if (!districtSelect) {
districtSelect = new KTSelect(districtEl, {
placeholder: "Åžehir seçiniz",
enableSearch: true,
searchPlaceholder: "Ara..."
});
}
function getOrCreateKTSelect(element, config) {
if (!element.instance) {
element.instance = new KTSelect(element, config);
}
return element.instance;
}