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

    Как выбрать определенный атрибут стиля?jQuery: выбрать атрибут стиля?

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

    Пытаюсь:

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

    , но не получает выбрано ничего.

    +3

    почему бы вам не использовать классы/идентификаторы для выбора вещей? И почему вы используете встроенный` стиль = `S tyles? – thejh 2010-11-27 12:21:59

    +0

    @thejh Есть веские причины для использования встроенных стилей в разы. Когда у вас есть много объектов, которые отличаются от базового стиля уникальными способами каждый раз, настройка нового идентификатора каждый раз часто бывает ненужным или для динамического кода, неприменима. – Orbling 2010-11-27 12:23:55

    +2

    Я пытаюсь извлечь данные с существующей html-страницы. – davidgale 2010-11-27 12:24:22

    ответ

    10

    Ваш пример работает для меня, в Chrome, по крайней мере, один раз я исправил опечатка недостающее "в конце строки.

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

    See this demo.

    4

    (Это не ответ на вопрос. Однако, если человек, который написал страницу HTML использовали классы вместо атрибута стиля, то OP не будет иметь эту проблему.)

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

    возможно попробовать

    $('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'; 
    }); 
    

    было бы проще, однако выбрать элемент одним атрибутом, такие как идентификатор или CSS класс, или это положение к элементу, который имеет идентификатор или CSS класс.

    9

    Насколько мне известно, нет никакого способа, чтобы сделать это с помощью селектора JQuery, но вы можете использовать filter() метод вместо:

    $("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"; 
    }); 
    
    Смежные вопросы