Основная проблема с this
:
const dropDown = $("#Status")
dropDown.empty()
const Statuses = [
{ "Id": 1, "Name": "Nuevo" },
{ "Id": 2, "Name": "Leído" },
{ "Id": 3, "Name": "Atendido" },
]
$.each(Statuses, function (key, item) {
dropDown.append($('<option></option>').attr('value', item.Id).text(item.Name))
console.log("wrong this", this)
console.log("no <option>'s found", $('option', this).length)
console.log("<option>'s found with correct this", $('option', dropDown).length)
// should be $('option', dropDown), but let it be for now
$('option', this).each(function () {
console.log("never called!!!")
// ...
})
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select class="form-control select2" data-toggle="select2" id="Status" name="Status"></select>
Давайте попробуем еще раз с правильным this
const dropDown = $("#Status")
dropDown.empty()
const Statuses = [
{ "Id": 1, "Name": "Nuevo" },
{ "Id": 2, "Name": "Leído" },
{ "Id": 3, "Name": "Atendido" },
]
$.each(Statuses, function (key, item) {
dropDown.append($('<option></option>').attr('value', item.Id).text(item.Name))
$('option', dropDown).each(function (i, el) {
console.log("condition =", $(this).html() == item.Name)
console.log("tring to select", $(this).html(), i)
})
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select class="form-control select2" data-toggle="select2" id="Status" name="Status"></select>
Так что именно вы пытаетесь выбрать? Прямо сейчас вы пытаетесь выбрать последний вариантов в последовательности, и вы делаете это трижды. (Но ведь ваш исходный код никогда не доходит до этой точки)
Должно быть:
const dropDown = $("#Status")
dropDown.empty()
const Statuses = [
{ "Id": 1, "Name": "Nuevo" },
{ "Id": 2, "Name": "Leído" },
{ "Id": 3, "Name": "Atendido" },
]
// some condition you must choose by yourself
function condition(item) { return item.Id === 2 }
$.each(Statuses, function (key, item) {
const option = $('<option></option>').attr('value', item.Id).text(item.Name)
dropDown.append(option)
if(condition(item)) option.attr('selected', 'selected')
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select class="form-control select2" data-toggle="select2" id="Status" name="Status"></select>