2009-07-24 13 views

Respuesta

26

Se podría utilizar un attribute selector de

Por ejemplo

$(":radio [style*='regular']") 

volvería un conjunto envuelto de cualquier radio de entrada que contienen 'regular' en el atributo de estilo

+1

¿Qué sucede si tenemos que hacer una selección basada en dos valores 'left: 180px' y' top: 360px'? –

+1

solo necesita usar múltiples selectores de atributos, p. '$ (" [left = '180px'] [top = '360px'] ")' –

3

Algo así como:

$('selector').each(function() { 
    if($(this).attr('style').indexOf('font-weight') > -1) { 
     alert('got my attribute'); 
    } 
}); 
+0

.indexOf puede devolver 0, que se evaluará como falso – mkoryak

+0

@mkoryak - gracias, me acabo de dar cuenta, lo arreglé. – karim79

1
var ccsStyle="font-weight:bold"; 
var els = []; 
$("*").each(function(){ 
    var st = $(this).attr("style"); 
    if(st.indexOf(cssStyle) > -1) els.push(this); 
}); 
//do stuff with els 
0

Se puede utilizar el indicador de atributo y el uso contiene si se conoce el formato específico que se encuentra.

$("[style*='position']") 

Esto sería encontrar todos los elementos que definen la posición de atributo css.

4

Creo que es posible que pueda escribir un selector jQuery personalizado para hacer esto.

Por ejemplo, si usted quiere hacer Selección por cierto atributo de estilo, que puede hacer:

jQuery.extend(jQuery.expr[':'], { 
    styleEquals: function(a, i, m){ 
     var styles = $(a).attr("style").split(" ") 
     var found = false; 
     for (var i = 0; i < styles.length; i++) { 
      if (styles[i]===m[3]) { 
       found = true; 
       break; 
      } 
     } 
     return found; 
    } 
}); 

A continuación, se puede utilizar en conjunción con cualquier otro selector puede seleccionar todos los elementos de entrada con cierto estilo como esto:

$('input:styleEquals('width=10px')') 
+1

esta funcionalidad ya está incluida en el lenguaje jQuery. todo lo que necesita es $ ('selector [cssAttribute = value]') –

+0

jquery inbuilt selector funciona solo si es una coincidencia exacta, por lo que solo coincidirá si style = "absolute;" no si style = "absolute; left". Entonces la solución que publiqué es para encontrar todos los elementos con valor absoluto, no solo coincide exactamente – Surya

+0

@Surya: sí, tuve un caso grave de interitis cerebro-rectal. No sé lo que estaba pensando –

16

Creo que esta es la solución más limpia. Digamos que desee encontrar todos los elementos que z-índice tiene un valor particular:

$('*').filter(function() { return $(this).css('z-index') == 101 }) 
0

Puede buscar cualquier atributo en línea con .attr() .. .attr('attr_name')

http://api.jquery.com/attr/

css_inline_value = $(element).attr('style'); 

if (css_inline_value = search_value) { 
    // do stuff 
} 
3

Sí, creo la manera más rápida y fácil de lograr los resultados deseados sería apuntar estilos con un selector de clase de propiedad.

Como se dijo antes:

$('div.yourClass[style*="background-color:Blue"]).css('color', 'White'); 

De esa manera nos dirigimos a todos los divs con la misma clase que tiene el fondo azul y contarles todo para que el texto de color blanco. Por supuesto, en lugar de .css podemos usar cualquier cosa aquí, .animate y decirle a todo el blues que se anime, etc. Esto me ayudó mucho con las relaciones con DB y las personas configuraron cosas extrañas en DB.

que solía ser menos genérico, y las cuerdas de destino con: Contiene ... pero entonces alguien va a la base, y cambia los textos y etiquetas, y adiós código;)

espero que ayude.

+0

Hay un error tipográfico en su código señor. '$ ('div.yourClass [style * =" background-color: Blue "]'). css ('color', 'Blanco');' –