如何传递选择器ID's作为变量通过casperjs传递给JQuery

How can I pass selector ID's as variables to JQuery through casperjs?

本文关键字:变量 casperjs JQuery ID 选择器 何传递      更新时间:2023-09-26

我正在casperjs中编写一个scraper,并试图从下拉列表中选择一个值。到目前为止,我发现最好的方法是使用JQuery。但是,如果我将选择器的ID作为变量传递,那么选择器就不会更新,而如果我将其作为字符串传递,则选择器将完全更新。

作品:

var specialtySelector = '#specialitydiv';
casper.evaluate(function () {
  $('#specialitydiv').find('select').val('238').change();
});

失败:

var specialtySelector = '#specialitydiv';
casper.evaluate(function () {
  $(specialtySelector).find('select').val('238').change();
});

有人能解释为什么在将选择器作为字符串传递成功时传递specialtySelector会失败吗?

这里的问题是CasperJS的evaluate()独立于脚本的其余部分运行。要解决此问题,需要传递要在evaluate()内部使用的任何变量。

var specialtySelector = '#specialitydiv';
casper.evaluate(function(sel) {
  $(sel).find('select').val('238').change();
}, specialtySelector);

第一个示例之所以有效,是因为您实际上没有使用任何evaluate()调用不可用的变量。