Два div с одним и тем же именем класса, как я могу очистить только первый экземпляр класса?
var Xray = require('x-ray');
var x = Xray();
var a = false;
var url = "abcdeabcde";
x(url, '.listing_risultati_prodotti .smcc-listing-risultati-prodotto', [{
title: '.first-col a',
link: '.product-description a@href',
prezzo: '.second-col .ish-priceContainer-salePrice'
}])(function(err, obj) {
console.log(obj)
})
Запрос прямо сейчас возвращает два раза одно и то же значение, потому что есть два div, которые соответствуют запросу.
[ { title: 'aaaa',
link: 'aaaa',
prezzo: 'aaaa' },
{ title: 'bbb',
link: 'bbb',
prezzo: ' bbb' },
{ title: 'ccc',
link: 'ccc',
prezzo: 'ccc' },
.....
....
.....
Then again
{ title: 'aaaa',
link: 'aaaa',
prezzo: 'aaaa' },
{ title: 'bbb',
link: 'bbb',
prezzo: ' bbb' },
{ title: 'ccc',
link: 'ccc',
prezzo: 'ccc' }]
оба div имеют одинаковый путь селектора
#maincontent > div.category-section > div.render-category-products.products > div.listing_risultati_prodotti
Они оба вложены в этот идентификатор: #smcc_comp_common_wrapper
структура похожа на:
<body>
#smcc_comp_common_wrapper
...
...
#mainwrapper
...
#maincontent > div.category-section > div.render-category-products.products > div.listing_risultati_prodotti
...
#mainwrapper
...
#maincontent > div.category-section > div.render-category-products.products > div.listing_risultati_prodotti
...
...
...
я пытаюсь что-то вроде:
x(url, '.listing_risultati_prodotti:nth-of-type(1) .smcc-listing-risultati-prodotto',
или также
x(url, ':nth-match(1 of #mainwrapper) .listing_risultati_prodotti .smcc-listing-risultati-prodotto',
но никто не работает
Возможно ли нацеливание только на экземпляр первого класса?
2 ответа
Это:
x(html, 'div#smcc_comp_common_wrapper div#mainwrapper:first-of-type div.listing_risultati_prodotti'
)(function(err, obj) {
console.log(obj)
})
также не должно быть нескольких элементов с одинаковым идентификатором
Если какое-либо решение, которое использует селекторы (например, используя :first-child
как предположил Вайбхав), не получается, как насчет разрезания результирующего массива объектов пополам?
function(err, obj) {
var half = obj.splice(obj.length/2);
}
Обратите внимание, что это своего рода обходной путь для вашей проблемы, однако он может быть приемлемым в этом конкретном случае.