Pues para "pasarlo" mejor a jQuery yo le quitaría el atributo "onchange" al select y lo haría así:
Código Javascript
:
Ver original$(function(){
$('select').change(function(){
//hacer algo
});
});
Claro que el selector ('select') lo podemos cambiar por algo más específico si no queremos seleccionar todos los <select> de la página.
Respecto a tu pregunta, te recomiendo que leas la documentación de jQuery ante cualquier duda de qué exactamente hace cada método.
.val() es para elementos de formulario (inputs, selects, textareas, etc). Devuelve el valor que tiene ese elemento. En el caso del select, devolvería el valor del atributo "value" de la opción que está seleccionada o su texto, de no tener dicho atributo. Mirá este ejemplo:
Código HTML:
Ver original<!DOCTYPE html>
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> $(function(){
$('select').change(function(){
alert('Valor: ' + $(this).val());
});
});
Observá que la única opción con atributo value es la 2, por lo que si la seleccionás obtendrás un "2" en el alert, pero no así con los demás.
Eso sería todo lo que necesitás, no hace falta que obtengas el "selected-index".