Mam prosty kod jQuery.

$(document).ready(function() { 
  $( ".translanguage" ).change(function() {
      var value = $(this).attr("langid");
      alert(value);
  });
});

I mam kod HTML.

<select name="translanguage" class="translanguage">
  <option value="0">Please Select Language</option>
  <option class="transoption" value="1" langid="1">Urdu</option>
  <option class="transoption" value="2" langid="2">English</option>
  <option class="transoption" value="3" langid="3">Arabic</option>
  <option class="transoption" value="4" langid="4">Sindhi</option>
</select>

Kiedy uruchomię ten program, daje niezdefiniowany błąd w polu Alert. Potrzebuję wartości Langid, jak podano w mojej opcji.

Więc jaki jest problem w moim kodzie. ?

Po drugie, jaka jest przyczyna niezdefiniowanego błędu w jQuery.

Dzięki

3
Rizwan Shamsher Kaim Khani 28 listopad 2013, 16:17

4 odpowiedzi

Najlepsza odpowiedź

Wewnątrz handlera zmiany this odnosi się do elementu select, ale langid jest w wybranym elemencie option. Musisz więc znaleźć wybrany option, a następnie zadzwoń .attr("langid") na tym elemencie

jQuery(function () {
    $(".translanguage").change(function () {
        var value = $(this).find('option:selected').attr("langid");
        alert(value);
    });
})

Demo: skrzypce

10
Arun P Johny 28 listopad 2013, 12:18

Spróbuj czegoś takiego

      $( ".translanguage" ).change(function() {
          alert(this.options[this.selectedIndex].getAttribute('langid'));
      });
2
rajesh kakawat 28 listopad 2013, 12:23

Ten skrypt będzie dla Ciebie działał. Zobacz jsfiddle

$(function () {
    $(".translanguage").change(function () {
        var value = $( "select option:selected" ).attr("langid");
        alert(value);
    });
})
2
sachin chavda 28 listopad 2013, 12:35

Spróbuj tego:

// jquery wont find the attr of langid, change the langid to id in html.
$(document).ready(function() { 
  $( ".translanguage" ).change(function() {
    var value = $(this).attr("id");
    alert(value);
  });
});
0
Zhihao 28 listopad 2013, 12:57