2015-11-14 3 views
1

Je suis en train de chercher tous les href links qui sont à l'intérieur d'un divs séparés avec le même cauchemar class name utilisant js ... voici mon code ci-dessous ....Comment récupérer des liens href de la même classe dans Nightmare avec jQuery

var Nightmare = require('nightmare'); 
var vo = require('vo'); 

vo(function*() { 
    var nightmare = Nightmare(); 
    var title = yield nightmare 
    .goto('https://example.com') 
    .type('input[name="q"]', 'search term') 
    .click('input[value="some title"]') 
    .evaluate(function() { 
     //return $('.myclass').find('a').attr('href'); 
     $('.myclass').find('a').each(function() { 
      return $(this).attr('href'); 
     }); 

    }); 
     console.log(title); 
    yield nightmare.end(); 

})(function (err, result) { 
    if (err) return console.log(err); 
}); 

ci-dessous est le contenu de mon div ...

<div class="myclass"><a href="example1.com">ex1</a> 
</div> 

<div class="myclass"><a href="example2.com">ex2</a> 
</div> 

<div class="myclass"><a href="example3.com">ex3</a> 
</div> 

Il peut chercher un lien quand j'utilise return $('.myclass').find('a').attr('href'); mais chaque fonction ne fonctionne pas (returns null) .. toute suggestion pour résoudre ce problème?

+0

Vous voulez un tableau de 'href's' – void

+0

@void oui c'est ce que j'essaie d'obtenir –

Répondre

1

je ne sais pas nightmare.js mais si vous voulez collecter tous href à un tableau le faire comme ceci:

.evaluate(function() { 
    var hrefs = []; 
    $('.myclass').find('a').each(function() { 
     hrefs.push($(this).attr('href')); 
    }); 
    console.log(hrefs); 
    //return hrefs 
}); 
1

Je pense que vous avez seulement besoin d'utiliser le nom de classe comme sélecteur avec « une » étiquette après:

$(".myClass a").each(function() { 
    return $(this).attr("href"); 
}); 

Voici un working example

+0

@ user343681: regardez mes mises à jour répondre, c'est ce que vous cherchez. –

0
.evaluate(function() { 
    var arr = []; 
    $('div.myClass > a').each(function(i) { 
     arr.push($(this).prop('href')); 
    }); 
    return arr; 
});