Получить номер пункта в меню настроек?Jquery - PullRequest
0 голосов
/ 06 октября 2011

Я использую .val () в jquery, чтобы сохранить значение меню параметров onChange.

Как бы я сохранил номер (в том порядке, в котором он указан) в выпадающем меню, используя jquery?

<select>
     <option>  //option 1
     <option>  //option 2
</select>

Вот что я сейчас установил:

<select id="start_month" onChange="getMonthDay()">
         <option>Jan</option>
         <option>Feb</option>
         <option>March</option>
         <option>April</option>
<select>

Используя,

function getMonthDay()
{

$('#start_month').val()
}

Я могу получить любое выбранное значение, но мой вопросКак я могу получить номер этого значения в разметке?За март хотелось бы 3 .. и т. Д.

Ответы [ 4 ]

1 голос
/ 06 октября 2011

Можете ли вы переформулировать свой вопрос лучше? Я все еще потерян в том, что ты хочешь.

Но, тем не менее, вот как <select> работает в jQuery

<select id="selection">
  <option value="val_1">value 1</option>
  <option value="val_2">value 2</option>
</select>

$("#selection").val() даст вам val_1 или val_2 в зависимости от того, какой предмет ведьмы выбран в данный момент.

Если вы хотите просмотреть все опции и отметить выбранные, вы можете использовать

$("#selection option:selected").val();

или через все <option> 1016 *

$("#selection option").each(function() {

    if( $(this).is(":selected") ) {

        var v = $(this).val();

    }

});

Если вы хотите сохранить все опции, вы можете легко клонировать их или назначить их как data , если вы хотите сохранить эти значения на всех страницах, используйте Local Database или Cookies сохранить данные.


Чтобы ответить на ваш вопрос после обновления:

Первый: Почему у вас нет:

<select id="start_month" onChange="getMonthDay()">
    <option value="1">Jan</option>
    <option value="2">Feb</option>
    <option value="3">March</option>
    <option value="4">April</option>
<select>

А использовать значение выбранного элемента?

Второе: Просто используйте то, что я написал выше, и используйте параметры

$("#start_month option").each(function(index, element) {

    if( $(this).is(":selected") ) {

        // get index position, remember to add 1 as arrays start at 0
        var n = index;

        // break each
        return false;

    }

});
0 голосов
/ 06 октября 2011

Здесь не нужно никаких итераций, пусть jQuery сделает это за вас, просто получите выбранный индекс и приращение ...

$('#start_month option:selected').index() + 1
0 голосов
/ 06 октября 2011

Я сделал что-то вроде этого, с нулевым ключом;

<select id='deneme'>
    <option>Val1</option>
    <option>Val2</option>
    <option>Val3</option>
    <option>Val4</option>
</select>

$('#deneme').change(function(){
        $.each( $('#deneme').children('option'),function(key,value){
            if($(this).is(':selected'))
                alert(key)
        })
})

вы можете проверить здесь http://jsfiddle.net/8JZCw/

0 голосов
/ 06 октября 2011

Вы получите список <option> элементов, найдете выбранный и будете использовать index:

var $opts = $('#start_month option');
var zero_based_index = $opts.index($opts.filter(':selected'));

Демо: http://jsfiddle.net/ambiguous/HyukW/

Просто добавьте 1, если вам нужен индекс на основе одного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...