0

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

3 Answers 3

1

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>

Sign up to request clarification or add additional context in comments.

Comments

0

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>

Comments

0

This solve my problem.

$('.courier option:last').attr('data-tarif', courierTarif);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.