2015-11-14 67 views
1

我试图获取所有href links它们具有相同class name一个单独的div内使用噩梦JS ...这里是我的代码如下....如何获取同一类的HREF链接在噩梦与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); 
}); 
下面

是我的股利内容...

<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> 

当我使用return $('.myclass').find('a').attr('href');但每个功能不起作用(returns null)..任何建议,以解决这个问题,可以取一个链接?

+0

你想要的阵列'href's' – void

+0

@void是这就是我想要得到的 –

回答

1

我不知道nightmare.js,但如果你想收集所有href到一个数组做这样的:

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

我想你只需要使用类的名字作为“一”的标签之后选择:

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

这里是一个working example

+0

@ user343681:看看我的更新答案,这就是你要找的。 –

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