2012-08-14 19 views
9

¿Alguien me puede decir por qué esto funciona en versiones anteriores de jQuery (por ejemplo, 1.4.2) pero si cambia a una versión posterior, p. (1.6 +) deja de funcionar?Buscar seleccionar la opción por texto

http://jsfiddle.net/nmvf6/1194/

$(function(){ 
    $('#my_button').click(function(){ 
     var unitName = "Unit2"; 
     $('.assUnit').find('option[text="'+unitName+'"]').remove(); 
    }); 

}); 

He comprobado la salida de error en la consola para las versiones posteriores, y parece un error que se produzca en la carga de la página, antes de que yo he incluso llegué hasta ya que la carga hasta mi guión y ser capaz de hacer clic en el botón ..

Cuando cambio a la versión 1.8.0, por ejemplo, y ejecutar la página, this error aparece en mi consola de guiones Opera:

http://s15.postimage.org/5yhodvirt/ess.png

que parece estar en un "mootools" file..but que no ha seleccionado mootools, he seleccionado jQuery 1.8.0

:/

Gracias.

+5

jaja, dijiste 'assUnit'. – RubeOnRails

Respuesta

13

está usando el Attribute Equals selector que selecciona los elementos que tienen el atributo especificado con un valor exactamente igual a un cierto valor , los elementos de opción no tienen atributos text, puede usar el selector :contains, intente esto:

Seleccionar todos los elementos que contienen el texto especificado.

$(function(){ 
    $('#my_button').click(function(){ 
     var unitName = "Unit2"; 
     $('.assUnit').find('option:contains('+unitName+')').remove(); 
    }); 
}); 

FIDDLE

Si desea seleccionar el elemento que sólo tiene cierto valor se puede utilizar el filter método:

$(function(){ 
    $('#my_button').click(function(){ 
     var unitName = "Unit2"; 
     $('.assUnit option').filter(function() { 
      return $(this).text() === unitName 
     }).remove(); 
    }); 
}); 

FIDDLE

+0

Hola, vea mi comentario sobre el otro que sugirió que contiene –

+0

Hmm, lo intenté pero parece que tampoco funciona. Sin embargo, no recibe ningún error de consola. EDITAR: lo tengo trabajando ahora, tuve que cambiar "entrada" a "opción" gracias. –

+0

@ user1597762 Sí, eres bienvenido. – undefined

2

es probable que tenga más suerte con esto:

$('.assUnit').find('option:contains('+unitName+')').remove(); 

Ver también: :contains() selector

+0

Hola, contiene no es bueno para esto, ya que tiene que ser una coincidencia exacta. contains ('unit2') por ejemplo también podría coincidir con 'unit200' y habrá una gran cantidad de menús y opciones de selección. –

0

probar esto

$(function(){ 
    $('#my_button').click(function(){ 
     var unitName = "Unit2"; 
     $(".assUnit option:contains('"+unitName+"')").remove(); 
    }); 

}); 
Cuestiones relacionadas