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

时间:2013-11-24 19:01:39

标签: javascript jquery jquery-selectors casperjs

我在casperjs中编写一个刮刀,我正在尝试从下拉列表中选择一个值。到目前为止,我发现这样做的最好方法是使用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();
});

任何人都可以解释为什么当字符串成功传递时传递expertSelector会失败吗?

1 个答案:

答案 0 :(得分:0)

这里的问题是CasperJS'evaluate()独立于脚本的其余部分运行。要解决此问题,您需要传递要在evaluate()

中使用的任何变量
var specialtySelector = '#specialitydiv';
casper.evaluate(function(sel) {
  $(sel).find('select').val('238').change();
}, specialtySelector);

第一个示例的工作原因是因为您实际上并未使用evaluate()调用无法使用的任何变量。