瀏覽代碼

jQ2 alpha

me@helium 8 年之前
父節點
當前提交
5d4bd593db
共有 1 個文件被更改,包括 131 次插入0 次删除
  1. 131 0
      jQuery02.md

+ 131 - 0
jQuery02.md

@@ -132,22 +132,153 @@ https://repl.it/E8Fc/7
 
 #### `preventDefault`
 
+Для отмены стандартного поведения браузера на событие (например переход по ссылке при клике на ней) существует функция объекта-события `preventDefault`:
+
+```javascript
+    $("a").click(function(evt){
+        evt.preventDefault(); //ссылки не работают
+    })
+```
+
 #### `false`
 
+Так же работает и false как результат функции:
+
+```javascript
+    $("a").click(function(evt){
+        return false; //ссылки не работают
+    })
+```
+
+Однако `return false;` работает только для `on` событий. Если вы добавляете обработчик через `addEventListener`, `return false;` не сработает.
+
+```javascript
+    document.getElementById("eventListener").addEventListener("click", function(evt){
+        return false;
+    });
+```
+
+Поэтому `preventDefault` является более предпочтительным способом, который работает **всегда**.
 
 ## jQuery UI
 
+**jQuery UI** - библиотека виджетов (и не только), которая используется в связке с jQuery. Часть виджетов являются не очень актуальными в силу появления
+возможностей HTML5.
+
 ### Что это, зачем и как подключить
 
+https://developers.google.com/speed/libraries/#jquery-ui
+
+```html
+<!-- jQuery -->
+<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
+
+<!-- jQueryUI -->
+<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">
+<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
+```
+
+Теперь мы можем использовать библиотеку. http://jqueryui.com
+
 ### jQuery UI как стандарт реализации API плагинов jQuery
 
+jQuery UI плагины работают стандартным для jQuery способом: как функция-метод, принадлежащая jQuery-объектам, найденным по селектору:
+
+```javascript
+$( "#draggable" ).draggable();
+```
+
+В этом примере плагин `draggable` применяется к элементу с id="draggable". http://jqueryui.com/draggable/
+
 #### Инициализация
 
+При инициализации плагину могут передаваться определенные настройки с помощью ассоциативного массива:
+
+```javascript
+    $( "#draggable" ).draggable({ axis: "y" });
+    $( "#draggable2" ).draggable({ axis: "x" });
+
+    $( "#draggable3" ).draggable({ containment: "#containment-wrapper", scroll: false });
+    $( "#draggable4" ).draggable({ containment: "parent" });
+```
+
+или же с параметрами по умолчанию:
+
+```javascript
+$( "#draggable" ).draggable();
+```
+
+Набор параметров и их описание ищите в документации к плагину.
+
 #### Методы
 
+Методы плагина позволяют оперировать с плагином в процессе его использования. Метод передается *строкой* в качестве первого параметра функции-плагина:
+
+```javascript
+var options = $( "#draggable" ).draggable( "option" );
+```
+
+Пример выше вызывает метод `option`, результат в форме ассоциативного массива сохраняется в переменной `options`.
+
+Для задания настроек:
+```javascript
+$( "#draggable" ).draggable( "option", { disabled: true } );
+```
+Вторым параметром идет ассоциативный массив с настройками для обновления внутри плагина. Обычно набор опций при инициализации совпадает с набором
+опций метода `option`.
+
+Для удаления плагина обычно существует метод `destroy`:
+
+```javascript
+$( "#draggable" ).draggable( "destroy" );
+```
+
+Документация для ознакомления: http://api.jqueryui.com/draggable/
+
 ## Chaining
 
+jQuery позволяет объединять несколько вызовов методов в *цепочки* следующим образом:
+
+```javascript
+$(this).css({"font-size": "2em"}).html("clicked")
+```
+https://repl.it/E8Fc/10
+
+В этом примере две операции объединены через точку. Это реализуется с помощью `return this`.
+
 ## AJAX/AJAJ
 
+**Asynchronous Javascript And XML** - изначально задумка M$, для получения возможности обращаться к серверам незаметно для пользователя из JS-кода.
+Представлена одним дополнительным объектом (XMLHttpRequest). jQuery предоставляет свою обертку над этим объектом, которая более удобна в использовании:
+
+```javascript
+$.get( "URL", function( data ) {
+    alert(data);
+});
+```
+
+Эта технология может передавать не только XML, но и любые другие данные; таким образом не совсем корректно называть её AJAX. В JS удобно работать
+с JSON, посему можно назвать это AJAJ. 
+
+**Задание:** прочитать данные и представить в виде ассоциативного массива из источника: [JSON](https://raw.githubusercontent.com/David-Haim/CountriesToCitiesJSON/master/countriesToCities.json)
+
 ### GET и POST
 
+Существует два основных HTTP метода - **GET** и **POST**.
+
+#### GET
+
+**GET** в целом аналогичен обычному посещению страницы или получению статического файла. Есть возможность отправить данные на сервер только с помощью
+**cookies** или параметров **GET**, которые идут после знака ? в конце **URL**: https://www.google.com.ua/search?client=opera&q=get+url&sourceid=opera&ie=UTF-8&oe=UTF-8
+
+- `=` отделяет параметр от значения
+- `&` отделяет пары параметр-значения друг от друга
+- ` ` (пробел) заменяется на `+`.
+- и кое-что еще, погуглите.
+
+#### POST
+
+Двунаправленное общение браузера с сервером обычно предполагает метод **POST** или иной. Метод **POST** позволяет отправлять данные в *теле запроса* а не в
+URL (как метод GET). Таким образом обычно отправляются данные форм, файлы и так далее. Мы будем использовать **POST** для отправки JSON на сервер.
+
+