Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   дайте ссылку на теорию (https://javascript.ru/forum/jquery/37877-dajjte-ssylku-na-teoriyu.html)

Faab 12.05.2013 14:01

дайте ссылку на теорию
 
Вот опять столкнулся с почти с такой же проблемой, как вчера. У меня есть мультипл селект с id="categories"... я хочу при каждом change заносить выбранные значения заносить в аrr[].

Так как задаю почти одинаковый вопрос как и вчера, спрашиваю следующие скажите какой раздел теории или какие функции надо посмотреть в интернете что бы уметь считывать значения с объекта.

Спасибо

Faab 12.05.2013 14:21

Или здесь надо ставить инфдификаторы на option и считывать с каждого с помощью value и заносить в массив? Правда так как список генерируется, это не совсем удобно, но возможно... Выбрать такой путь?

danik.js 12.05.2013 16:35

Ну ты и наркоман...

<select multiple="" size="3">
    <option value="v1">Value 1</option>
    <option value="v2">Value 2</option>
    <option value="v3">Value 3</option>
</select>
<script src="//code.jquery.com/jquery-latest.min.js"></script>
<script>
$('select').change(function(){
    var values = $(this).val();
    alert(values);
});
</script>

Faab 12.05.2013 16:53

А я писал так:

$("#categories").change(function(){  //тут смысл большой не меняется, правильно?
    var values = this.val(); //вот здесь у меня вылетала ошибка
    alert(values);
});


Что мне поискать в интернете, что бы я понял почему надо писать $(this) а не просто this, как ты использовал в прошлом примере. Читаю сейчас параллельно учебник по JS, но кажется тут чисто JQ уже.

В любом случае ещё раз спасибо.

danik.js 12.05.2013 18:05

Для начала уясни, что $ - это функция. В качестве аргумента принимает селектор или DOM-элемент, и возвращает jquery-коллекцию, которая имеет различные методы, в том числе и val() .
Список методов смотри на http://api.jquery.com или мож че на русском найдешь.
То, что this внутри обработчиков, навешанных методами jquery указывает на голый DOM-элемент, а не на jquery-обертку - это нужно просто запомнить.
И да, пока не освоишь базовый JS, нативные методы для работы с DOM - забудь про jQuery, иначе так и будешь вечно путаться.

danik.js 12.05.2013 18:10

К примеру вот код jquery, отвечающий за создание списка значений селекта:

get: function( elem ) {
				var value, option,
					options = elem.options,
					index = elem.selectedIndex,
					one = elem.type === "select-one" || index < 0,
					values = one ? null : [],
					max = one ? index + 1 : options.length,
					i = index < 0 ?
						max :
						one ? index : 0;

				// Loop through all the selected options
				for ( ; i < max; i++ ) {
					option = options[ i ];

					// oldIE doesn't update selected after form reset (#2551)
					if ( ( option.selected || i === index ) &&
							// Don't return options that are disabled or in a disabled optgroup
							( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) &&
							( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {

						// Get the specific value for the option
						value = jQuery( option ).val();

						// We don't need an array for one selects
						if ( one ) {
							return value;
						}

						// Multi-Selects return an array
						values.push( value );
					}
				}

				return values;
			}


Часовой пояс GMT +3, время: 01:13.