Im intentando configurar de forma que puedo personalizar el aspecto de un menú desplegable. Im limitado en lo que puedo hacer con css, así como Id ocultar el elemento "seleccionar" y en su lugar muestra una lista desordenada que funcionará de la misma manera:
iniciar con esto:
<td>
<select name="scope">
<option value="days">Days</option>
<option value="weeks">Weeks</option>
<option value="months">Months</option>
<option value="years">Years</option>
</select>
</td>
- <td>
- <select name="scope">
- <option value="days">Days</option>
- <option value="weeks">Weeks</option>
- <option value="months">Months</option>
- <option value="years">Years</option>
- </select>
- </td>
-
usar javascript para hacer esto:
<td>
<select name="scope" style="display: none;">
<option value="days">Days</option>
<option value="weeks">Weeks</option>
<option value="months">Months</option>
<option value="years">Years</option>
</select>
<ul>
<li>Days</li>
<li>Weeks</li>
<li>Months</li>
<li>Years</li>
</ul>
</td>
- <td>
- <select name="scope" style="display: none;">
- <option value="days">Days</option>
- <option value="weeks">Weeks</option>
- <option value="months">Months</option>
- <option value="years">Years</option>
- </select>
- <ul>
- <li>Days</li>
- <li>Weeks</li>
- <li>Months</li>
- <li>Years</li>
- </ul>
- </td>
-
¿Qué Im recibiendo en su lugar es el siguiente:
<td>
<select name="scope" style="display: none;">
<option value="days">Days</option>
<option value="weeks">Weeks</option>
<option value="months">Months</option>
<option value="years">Years</option>
</select>
<ul>
<li>Days</li>
<li></li>
<li>Weeks</li>
<li></li>
<li>Months</li>
<li></li>
<li>Years</li>
<li></li>
</ul>
</td>
- <td>
- <select name="scope" style="display: none;">
- <option value="days">Days</option>
- <option value="weeks">Weeks</option>
- <option value="months">Months</option>
- <option value="years">Years</option>
- </select>
- <ul>
- <li>Days</li>
- <li></li>
- <li>Weeks</li>
- <li></li>
- <li>Months</li>
- <li></li>
- <li>Years</li>
- <li></li>
- </ul>
- </td>
-
Heres la Im de código javascript mediante:
$("select")
.css({
display : "none",
})
.parent()
.append( function(index, html) {
var opts = $(this).children('select').children('option');
var ar = "";
for(i=0;i<opts.length;i++){
ar = ar+"<li>"+$(opts[i]).text()+"<li>";
}
ar = "<ul>"+ar+"</ul>";
return ar;
})
.children("select")
.children('option')
.first()
.attr("selected","selected");
-
- $("select")
- .css({
- display : "none",
- })
- .parent()
- .append( function(index, html) {
- var opts = $(this).children('select').children('option');
- var ar = "";
- for(i=0;i<opts.length;i++){
- ar = ar+"<li>"+$(opts[i]).text()+"<li>";
- }
- ar = "<ul>"+ar+"</ul>";
- return ar;
- })
- .children("select")
- .children('option')
- .first()
- .attr("selected","selected");
-
Me doy cuenta no es el código más limpio del mundo...javascript no es mi fuerte de traje. Im seguro que la cantidad de selectores y salto de DOM Im haciendo hará personas mortifican...pero Id quisiera saber dónde Im va mal con mi bucle for. ¿Por qué estoy recibiendo elementos de la lista vacíos adicional?
Use your words like arrows to shoot toward your goal.