In realtà il titolo non copre completamente ciò che sto cercando. Ho creato il mio elemento select. È composto da alcuni elementi di input div, ul/li e hidden. Ovviamente ha la parte markup e javascript. Ecco il codice html:Come posso aggiungere una proprietà al mio elemento personalizzato ed essere in grado di eseguire un'azione sul suo cambio di valore
<div id="ddlCars" class="ma-select" style="width:350px;">
<div class="ma-select-box"><input class="ma-select-box-filter" type="text"></div>
<div class="ma-select-options">
<ul class="ma-select-ul">
<li class="ma-select-li ma-visible-option" optvalue="7">MERCEDES</li>
<li class="ma-select-li ma-visible-option" optvalue="10">BMW</li>
<li class="ma-select-li ma-visible-option" optvalue="14">AUDI</li>
<li class="ma-select-li ma-visible-option" optvalue="3">VOLKSWAGEN</li>
</ul>
</div>
<input class="ma-select-hidden" type="hidden">
</div>
Il codice JavaScript è solo un mucchio di funzioni che catturano gli eventi come clic, hover, keyup ecc e sono legati agli elementi di cui sopra (per classe) su metodo pronto. Non ho dichiarato alcun tipo per questa selezione personalizzata.
Con un elemento di selezione normale DOM sono in grado di fare questo:
document.getElementById("mySelect").selectedIndex=0;
ora vorrei per ottenere il qualcosa di simile. Posso trovare il div wrapper per ID o nome della classe. Ma c'è un modo in cui posso fare qualcosa di simile?
$('#ddlCars').selectedIndex=1;
Così in qualche modo, ho bisogno di aggiungere una proprietà da mia abitudine selezionare e catturare la sua modifica per impostare il valore selelcted all'elemento li corrispondente.
Forse il metodo jquery .change() attiverà un evento quando il puntello cambia? – crashxxl
Dovresti usare 'Object.defineProperty()' e creare una funzione setter sia per impostare il valore della proprietà sia per fare quello che vuoi fare con esso. Allo stesso modo una funzione getter può aiutarti a correggere le azioni quando viene letto il valore. – Redu