indexof() 不选择字符串的第一个实例

indexof() not selecting the first instance of string

一段时间以来我一直在努力解决这个问题,但我似乎做不到。

我有这个用于 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;
        });

并且我正在尝试从值

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

但由于某种原因,它每次都 selects 10.5,当它应该 select 10.

有人知道怎么回事吗?感谢帮助。

.each() 循环处理每个元素。因此 size 变量最终将成为匹配的 last 项目而不是第一个。

您可以通过从传递给 .each() 的函数中返回 false 来在匹配后立即停止循环。

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;
    });