indexof() не выбирает первый экземпляр строки
Пытался понять это в течение некоторого времени, и я не могу этого сделать.
У меня есть это для 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.
Кто-нибудь знает, что не так? Ценю помощь.
1 ответ
Решение
.each()
цикл обрабатывает каждый элемент. Итак size
переменная в итоге будет последним элементом, который соответствует, а не первым.
Вы можете остановить цикл, как только у вас есть совпадение, вернув 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;
});