javascript
  • jquery
  • html
  • 2010-11-27 21 views 8 likes 
    8

    ¿Cómo seleccionar con un atributo de estilo específico?jQuery: ¿seleccionar atributo de estilo?

    <div style="width: 420px; text-align: left; margin-top: 10px; margin-bottom: 10px;"> 
    

    Estoy intentando:

    $("div[style='width: 420px; text-align: left; margin-top: 10px; margin-bottom: 10px;']); 
    

    pero nada se interpone seleccionado.

    +3

    ¿por qué no utilizar los identificadores de clases/para seleccionar cosas? ¿Y por qué se utiliza en línea' 'style = s tyles? – thejh

    +0

    @thejh Hay buenas razones para usar estilos en línea a veces. Cuando tiene muchos objetos que difieren de un estilo base en formas únicas cada vez, la configuración de una nueva identificación cada vez es a menudo innecesaria o para el código dinámico, no aplicable. – Orbling

    +2

    Estoy tratando de extraer datos de una página html existente. – davidgale

    Respuesta

    10

    Su ejemplo funciona para mí, en Chrome, al menos, una vez corregido el typo del desaparecido "al final de la línea.

    $("div[style='width: 420px; text-align: left; margin-top: 10px; margin-bottom: 10px;']"); 
    

    See this demo.

    +1

    Esta es una solución altamente específica. ¿Qué sucede si estás buscando un atributo de estilo, p. 'text-align: left'? –

    4

    (esto no responde a la pregunta. Sin embargo, si la persona que escribió la página HTML había usado clases en lugar del atributo de estilo, a continuación, el PO no tendría este problema.)

    .foo { width: 420px; text-align: left; margin-top: 10px; margin-bottom: 10px; } 
    
    <div class="foo"> </div> 
    
    $("div.foo") 
    
    2

    quizás tratar

    $('div').filter(function() { 
        var self = $(this); 
        return self.width() === 420 && 
          self.css('margin-top') === '10px' && 
          self.css('margin-bottom') === '10px' && 
          self.css('text-align') === 'left'; 
    }); 
    

    sería más fácil sin embargo para seleccionar el elemento por un atributo, tales como identificador o CSS clase, o por su posición a un elemento que tiene una clase de identificación o CSS.

    9

    Que yo sepa, no hay manera de hacer que el uso de un selector de jQuery, pero se puede utilizar el método filter() lugar:

    $("div").filter(function() { 
        var $this = $(this); 
        return $this.css("width") == "420px" 
         && $this.css("text-align") == "left" 
         && $this.css("margin-top") == "10px" 
         && $this.css("margin-bottom") == "10px"; 
    }); 
    
    +2

    Caché $ (esto). Por favor. Por el bien de mi CPU. – Matt

    +0

    @Matt, tienes razón, hecho :) –

    +0

    OK, nadie en el buen juicio haría lo que intentó el consultante, ¡sin embargo, el filtro es un gran truco para muchas cosas buenas! – KateYoak

    Cuestiones relacionadas