javascript label - jQuery obtener texto de etiqueta de opción específica




10 Answers

Está buscando un elemento con list ID que tenga un value propiedad igual a 2. Lo que desea es la option hijo de la list .

$("#list option[value='2']").text()
un span

Muy bien, digamos que tengo esto:

<select id='list'>
    <option value='1'>Option A</option>
    <option value='2'>Option B</option>
    <option value='3'>Option C</option>
</select>

¿Cómo sería el selector si quisiera obtener la "Opción B" cuando tengo el valor '2'?

Tenga en cuenta que esto no es preguntar cómo obtener el valor de texto seleccionado , sino cualquiera de ellos, ya sea seleccionado o no, dependiendo del atributo de valor. Lo intenté:

$("#list[value='2']").text();

Pero no está funcionando.




Esto funcionó perfectamente para mí, estaba buscando una manera de enviar dos valores diferentes con opciones generadas por MySQL, y lo siguiente es genérico y dinámico:

$(this).find("option:selected").text();

Como se menciona en uno de los comentarios. Con esto pude crear una función dinámica que funciona con todos mis cuadros de selección y quiero obtener ambos valores, el valor de opción y el texto.

Hace unos días me di cuenta de que al actualizar jQuery de 1.6 a 1.9 del sitio, utilicé este código, esta parada de trabajo ... probablemente era un conflicto con otra pieza de código ... de todos modos, la solución era eliminar la opción del buscar () llamar:

$(this).find(":selected").text();

Esa fue mi solución ... utilícela solo si tiene algún problema después de actualizar su jQuery.




$("#list option:selected").each(function() {
   alert($(this).text());
});  

para múltiples valores seleccionados en el elemento #list .




Intenta lo siguiente:

$("#list option[value=2]").text();

La razón por la que su fragmento de código original no estaba funcionando es porque sus etiquetas de OPTION son secundarias a su etiqueta SELECT , que tiene la list id .




$(this).children(":selected").text()



$("#list [value='2']").text();

Deja un espacio después del selector de id.




Mientras se "repite" a través de elementos dinámicamente creados, seleccione con .each (function () ...): $("option:selected").text(); y $(this + " option:selected").text() no devolvió el texto de la opción seleccionada, en su lugar era nulo.

Pero la solución de Peter Mortensen funcionó:

$(this).find("option:selected").text();

No sé por qué la forma habitual no tiene éxito en un .each() (probablemente mi propio error), pero gracias, Peter. Sé que esa no era la pregunta original, pero la menciono "para los novatos que vienen a través de Google".

Habría empezado con $('#list option:selected").each() excepto que también necesitaba tomar cosas del elemento seleccionado.




Estaba buscando obtener val por nombre de campo interno en lugar de ID y vine de google a esta publicación que me ayudó pero no encontré la solución que necesitaba, pero obtuve la solución y aquí está:

Por lo tanto, esto podría ayudar a alguien que busque un valor seleccionado con el nombre interno del campo en lugar de usar la identificación larga para las listas de SharePoint:

var e = $('select[title="IntenalFieldName"] option:selected').text(); 






Quería una versión dinámica para seleccionar múltiples que mostraría lo que está seleccionado a la derecha (ojalá hubiera leído y visto $(this).find ... anterior):

<script type="text/javascript">
    $(document).ready(function(){
        $("select[showChoices]").each(function(){
            $(this).after("<span id='spn"+$(this).attr('id')+"' style='border:1px solid black;width:100px;float:left;white-space:nowrap;'>&nbsp;</span>");
            doShowSelected($(this).attr('id'));//shows initial selections
        }).change(function(){
            doShowSelected($(this).attr('id'));//as user makes new selections
        });
    });
    function doShowSelected(inId){
        var aryVals=$("#"+inId).val();
        var selText="";
        for(var i=0; i<aryVals.length; i++){
            var o="#"+inId+" option[value='"+aryVals[i]+"']";
            selText+=$(o).text()+"<br>";
        }
        $("#spn"+inId).html(selText);
    }
</script>
<select style="float:left;" multiple="true" id="mySelect" name="mySelect" showChoices="true">
    <option selected="selected" value=1>opt 1</option>
    <option selected="selected" value=2>opt 2</option>
    <option value=3>opt 3</option>
    <option value=4>opt 4</option>
</select>



Related