Reputation: 5525
I have this code:
$.ajax({
url: "ajax-ongkir.php?destination=" + subdistrictId + "&destination_type=subdistrict&weight=" + weight,
dataType: "JSON",
success: function(json) {
for (var i = 0; i < json.length; i++) {
var courierName = json[i].name;
var courierService = json[i].service;
var courierTarif = json[i].tarif;
$('.courier').append($('<option>', {
value: courierName + ' ' + courierService + ' ' + courierTarif,
text: courierName + ' - ' + courierService + ' - ' + courierTarif
}));
$('.courier').$('<option>').last().attr('data-tarif', courierTarif);
}
}
});
but this line doesn't work:
$('.courier').$('<option>').last().attr('data-tarif', courierTarif);
How to add courierTarif
as data attribute into <option>
?
Upvotes: 0
Views: 38
Reputation: 22323
You are using wrong selection.
Replace:
$('.courier').$('<option>')
with:
$('.courier option')
Now your last()
selector work.
$('.courier option').last().attr('dat-tarif', "hi");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select class="courier">
<option value="a">1</option>
<option value="b">2</option>
<option value="c">3</option>
</select>
Alternative you can use find
.
$('.courier').find('option').last().attr('dat-tarif', "hi");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select class="courier">
<option value="a">1</option>
<option value="b">2</option>
<option value="c">3</option>
</select>
Upvotes: 1
Reputation: 5525
This solve my problem.
$('.courier option:last').attr('data-tarif', courierTarif);
Upvotes: 0
Reputation: 6755
you need to try like this.
$('.courier option[value="3"]').attr('data-tarif', "hi");
$('.courier option[value="3"]').attr('data-tarif', "hi");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select class="courier">
<option value="1">opt1</option>
<option value="2">opt2</option>
<option value="3">opt3</option>
</select>
Upvotes: 0