2011-01-26 4 views
0

Я столкнулся с функцией знака доллара над интернетом и решил использовать его для меню переключения javascript. Однако символ «$» заставляет мой код терпеть неудачу.

Это то, что я пытаюсь использовать:

function $() { 
     var elements = new Array(); 
     for (var i = 0; i < arguments.length; i++) { 
      var element = arguments[i]; 
      if (typeof element == 'string') 
       element = document.getElementById(element); 
      if (arguments.length == 1) 
       return element; 
      elements.push(element); 
     } 
     return elements; 
    } 

    function toggle(obj) { 
     var el = $(obj); 
     el.style.display = (el.style.display != 'none' ? 'none' : ''); 
    } 

в $ от "функции $() {", похоже, взломать код. Как вы объявляете эту функцию? Если я заменил $ на «ничего», он работает, но не как функция доллара ...

+0

Вы также используете jquery или какой-либо другой фреймворк javascript? –

+0

Можете ли вы объяснить, почему вы считаете, что '' $ '' - хорошее имя для этой функции? – ChaosPandion

ответ

7

знак доллара не является стандартной функцией Javascript, но является частью библиотеки третьей стороны.

Есть две хорошо известные библиотеки, которые используют знак доллара таким образом.

Старший называется Prototype, но тот, который в настоящее время находится в моде, и, скорее всего, тот, который вы видели при использовании, - JQuery.

Обе эти библиотеки будут использоваться путем добавления тега <script> на вашу HTML-страницу, чтобы включить код библиотеки, после чего вы можете использовать их функциональные возможности.

Большая часть функциональных возможностей обеих этих библиотек содержится в их соответствующих функциях $(). В случае JQuery вы также можете обратиться к функции $() как jQuery(), чтобы предотвратить конфликты пространства имен, в случае, если вы хотели использовать их оба.

Я предлагаю прочитать JQuery перед продолжением - JQuery очень мощный и добавляет много функциональности, но стиль кодирования для написания кода JQuery может сильно отличаться от обычного Javascript и может немного привыкнуть к. И это совсем не похоже на изучение API и выяснение того, что он может сделать.

Чтобы ответить на ваш вопрос - как объявить $ как имя функции, я предлагаю посмотреть исходный код JQuery, чтобы увидеть, как они это делают. Тем не менее, мне удалось произвести рабочую $() функции в первый раз, когда я пытался, как это:

var $ = function() {alert('dollar works for me');} 
$(); 

Но если честно, я бы не стал этого делать. Если вы действительно хотите использовать функцию $() так, как она используется на других сайтах, вам нужно использовать JQuery. Это намного больше, чем просто упаковка document.getElementById().

Кстати, JQuery и Prototype не являются единственными подобными библиотеками. Если вас интересует такая вещь, вы также можете посмотреть в MooTools, YUI и еще несколько других.

Надеюсь, что это поможет.

+0

Спасибо за подробный ответ! Я буду иметь в виду. – Spectraljump

3

Знак $ - это обозначение для различных фреймворков javascript (прототип/jQuery). Поскольку замена его на «что-либо еще» работает, у вас, скорее всего, есть столкновение между этой встроенной функцией и используемой структурой.

Само по себе обозначение и функция верны, как показано в следующем примере.

Открыть новую вкладку/окно и введите его в адресной строке:

javascript:eval("function $() { alert('hi'); } $();"); 
Смежные вопросы