дайте ссылку на теорию
Вот опять столкнулся с почти с такой же проблемой, как вчера. У меня есть мультипл селект с id="categories"... я хочу при каждом change заносить выбранные значения заносить в аrr[].
Так как задаю почти одинаковый вопрос как и вчера, спрашиваю следующие скажите какой раздел теории или какие функции надо посмотреть в интернете что бы уметь считывать значения с объекта. Спасибо |
Или здесь надо ставить инфдификаторы на option и считывать с каждого с помощью value и заносить в массив? Правда так как список генерируется, это не совсем удобно, но возможно... Выбрать такой путь?
|
Ну ты и наркоман...
<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>
|
А я писал так:
$("#categories").change(function(){ //тут смысл большой не меняется, правильно?
var values = this.val(); //вот здесь у меня вылетала ошибка
alert(values);
});
Что мне поискать в интернете, что бы я понял почему надо писать $(this) а не просто this, как ты использовал в прошлом примере. Читаю сейчас параллельно учебник по JS, но кажется тут чисто JQ уже. В любом случае ещё раз спасибо. |
Для начала уясни, что $ - это функция. В качестве аргумента принимает селектор или DOM-элемент, и возвращает jquery-коллекцию, которая имеет различные методы, в том числе и val() .
Список методов смотри на http://api.jquery.com или мож че на русском найдешь. То, что this внутри обработчиков, навешанных методами jquery указывает на голый DOM-элемент, а не на jquery-обертку - это нужно просто запомнить. И да, пока не освоишь базовый JS, нативные методы для работы с DOM - забудь про jQuery, иначе так и будешь вечно путаться. |
К примеру вот код 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, время: 21:42. |