一直试图解决这个问题一段时间了,我似乎无法做到这一点。
我有这个用于casperjs
var size = this.evaluate(function () {
var number = 10;
var size;
$('select[name="placeholder"] option[name="plId"]')
.each(function (index, dom) {
var currentsize = $(dom).attr('value');
if (String(currentsize).indexOf(
String(number)) > -1) {
size = currentsize;
}
});
return size;
});
我试图从值
中选择10<option name="plId" value="25437456:10" data-label="(10)">10</option>
<option name="plId" value="53467763:10.5" data-label="(10.5)">10.5</option>
但由于某种原因,每次选择10.5时,应选择10。
任何人都知道什么是错的?感谢帮助。
答案 0 :(得分:3)
.each()
循环处理每个元素。因此,size
变量最终将成为匹配而不是第一个的 last 项目。
您可以通过从传递给false
的函数中返回.each()
,在匹配后立即停止循环。
var size = this.evaluate(function() {
var number = 10;
var size;
$('select[name="placeholder"] option[name="plId"]')
.each(function(index, dom) {
var currentsize = $(dom).attr('value');
if (String(currentsize).indexOf(
String(number)) > -1) {
size = currentsize;
return false; // <--- ADD THIS
}
});
return size;
});