Мне нужна помощь в понимании синтаксиса JS - PullRequest
0 голосов
/ 18 октября 2010

Прежде чем вы начнете читать ... Вы должны знать, что есть много вопросов ниже ... Я буду признателен за любую помощь, чтобы понять любую часть кода MIT (плагин jFlip для jQuery v0.4), который я нахожу очень труднымпонять

Вы можете найти код, если хотите, по адресу http://plugins.jquery.com/project/jFlip

и увидеть, как он работает при http://www.jquery.info/scripts/jFlip/demo.html

(function($){    
       $(function(){    
           $("#g1").jFlip(800,800,{background:"green",cornersTop:false}).
           bind("flip.jflip",function(event,index,total){
              $("#l1").html("Image "+(index+1)+" of "+total);
           });        
       });
   })(jQuery);

  1. функция получает $, а затем использует $ перед другой функцией ?! и, похоже, становится функцией $ ("g1")... это похоже на делегата (это? как это работает)
  2. Как работает связывание ... это правильная функция js? (я имею в виду часть языка)
  3. что такое роль "g1"? Я бы ожидал что-то вроде "select case" где-то в коде, но не могу найти его ...

Еще один код, который я нахожу сложным, это:

; (function($) {
      var Flip = function(canvas, width, height, images, opts) {
      //private vars
      opts = $.extend({ background: "green", cornersTop: true, scale: "noresize" }, opts);
      var obj = this,
      el = canvas.prev(),
  1. почему ";" необходимо, чтобы он функционировал
  2. есть переменная внутри переменной - что это значит - этокласс, структура или что?
  3. el = canvas.prev () ... el не определен где-либо, является ли это сохраненным словом для чего-то?

и последнее - это одноэто важно для меня:

.click(function(){
  if(onCorner && !flipping) {
      el.trigger("flip.jflip",[index,images.length]);
  }
  return false;
})
  1. что такое синтаксис точки: .click (... некоторое определение функции ...)
  2. Мне нужно сделать код вщелчок для выполнения каждые 5 секунд ... как onPageLoad (while (true) set timeout = 5000;call click;)

Самое время поблагодарить Trufa за эти ссылки: Как получить эффект bookflip с помощью JavaScript

Большое вам спасибо заваше время Асаф

Ответы [ 2 ]

1 голос
/ 18 октября 2010

1 Вопрос

Здесь у вас есть анонимная функция, которая автоматически выполняет (function(){})();, и в ней вы передаете объект jQuery (который на самом деле является функцией) как переменную, которая называется $.Это то же самое (вызывая его LALA, а не $):

(function(LALA){    
       LALA(function(){    
           LALA("#g1").jFlip(800,800,{background:"green",cornersTop:false}).
           bind("flip.jflip",function(event,index,total){
              LALA("#l1").html("Image "+(index+1)+" of "+total);
           });        
       });
   })(jQuery);

Bind реализован в объекте jQuery как отдельная подфункция (метод).В нем происходит более сложный код, который обрабатывает события в разных браузерах, но гарантирует, что ваше событие не будет привязано ни к какому метру, который вы используете для просмотра страницы.

Этот #g1 является селектором стиля CSS.Вы должны будете Google на это для получения дополнительной информации.Это означает "получить элемент HTML с идентификатором = 'g1' и вызвать следующий метод для него" .В вашем случае вы выбираете элемент с ID=g1 и вызываете jFlip() на нем.Чтобы выбрать элементы, которые имеют класс ELEMENT, вы должны использовать точку, например, $(".ELEMENT").

2 Вопрос

Точка с запятой нужна только если вы пишете два илибольше операторов в той же строке, например:

alert("lalala") var a = 2+3

Таким образом, вы должны записать их в отдельные строки, например так:

alert("lalala") 
var a = 2+3

Или разделить с помощью;в той же строке:

alert("lalala"); var a = 2+3

Для переменных вам нужно знать, что в JS нет типов.Вы можете иметь функции в var, integer, string ... и объектах.Объекты состоят из функций, использующих ключевое слово new.Там в вашем коде вы сохраняете ссылку Flip на анонимную функцию, которая делает что-то ... Для объявления переменных var не требуется, поэтому вы можете иметь el = 10, и это будет действительным определением переменной.

3 Вопрос

Синтаксис точки не существует.Вы вызываете .click() для объекта jQuery, который был до . в строке ранее.

Для тайм-аута вам понадобится еще XP ... Google еще ... ... 1050 *

1 голос
/ 18 октября 2010

Как предполагает Сарфраз, вам нужно прочитать руководство по Jquery.

Я отвечу на ваши вопросы, чтобы быстро помочь вам:

  • использование $ указывает, что этообъект Jquery.Таким образом, вы можете получить доступ ко всем методам / свойствам и т. Д., Которые предоставляет Jquery.

  • $ ("# g1") не является делегатом, это способ конвертировать HTML сидентификатор "g1" в объекте jquery.

  • the ";"до "; (функция ($)" я не думаю, что вам это нужно.

  • "есть переменная внутри переменной", я полагаю, вы ссылаетесь на эту часть ": "зеленый", с ", это способ передачи объекта, состоящего из различных переменных, в метод / класс.

  • " el "определяется как" obj ", полныйпредложение "var obj, el = ...", поэтому определяется как переменная.

...