2016-11-22 4 views
-1

Примечание: Я не ищу родителя элемента. Я ищу элемент, содержащий другие элементы внутри него.Как написать селектор CSS для элемента, который содержит другие элементы?

Я использую Rails 4.2.7, и я использую Nokogiri для анализа документов HTMl. Я хочу найти таблицу в моем документе, чья первая строка (первый элемент tr) имеет хотя бы один элемент. Как написать селектор CSS для этого? Обратите внимание, что я хочу только выбрать таблицу, а не сами элементы th. Вот пример таблицы, я хотел бы надеяться, чтобы выбрать из документа

<table> 
    <tbody> 
     <tr> 
      <th>Header 1</th> 
     </tr> 
     <tr> 
      <td>Other data</td> 
     </tr> 
     … 
    </tbody> 
</table> 
+0

Родительские селекторы не существует в CSS3. Вот одна из многих статей на нем. https://www.google.ca/amp/s/css-tricks.com/parent-selectors-in-css/amp/?client=ms-android-rogers-ca. Вы можете попробовать jquery, если это вариант вроде как в этом ответе. Получить таблицу find th get parent. http://stackoverflow.com/a/3523794/3366016 – user3366016

+0

Пожалуйста, прочтите «[mcve]». Мы хотели бы видеть, что вы пробовали, а не только образец ваших входных данных. –

+0

Возможный дубликат [Есть ли родительский селектор CSS?] (Http://stackoverflow.com/questions/1014861/is-there-a-css-parent-selector) –

ответ

0

Вы можете попробовать использовать Array#select метод, фильтр все таблицы, где первый trth содержит элемент.

Например, предположим, что у вас есть Nokogiri объект под названием doc:

require "nokogiri" 
require "open-uri" 

url = # your url 
doc = Nokogiri::HTML.parse(open(url)) 

tables = doc.css("table").select do |table| 
    # consider only the first row of each table 
    first_row = table.css("tr").first 

    # check if that row's children contains a <th> element 
    first_row.children.map(&:name).include?("th") 
end