как работает $ (function () {}); в jquery - PullRequest
2 голосов
/ 02 марта 2010

Мне нравится знать, как работает или что означает (?), Когда вы определяете функцию в селекторе в jquery, как это.

$(function(){code,code})

потому что с jquery-ui вы можете (или должны .. я действительно новичок в этой библиотеке) установить аккордеон с этим кодом

$(function(){
    // Accordion
    $("#accordion").accordion({ header: "h3" });

    //hover states on the static widgets
    $('#dialog_link, ul#icons li').hover(
        function(){$(this).addClass('ui-state-hover');},
        function(){$(this).removeClass('ui-state-hover');
    });

});

Источник: http://jqueryui.com/demos/accordion/

И у меня есть проблема с настройкой аккордов внутри вкладок (также с jquery-ui), но я не могу найти, почему работает глючно, и я думаю, что, возможно, я могу решить проблему, понимая это поведение.

И точно уверен, что я не понял, как правильно переключать селектор в jquery, надеюсь, вы мне поможете. Заранее спасибо, кстати извините за мой плохо английский.

Ответы [ 4 ]

4 голосов
/ 02 марта 2010
$(function(){ /*...*/ });

То же, что и

$(document).ready(function(){ /*...*/ });

По сути, он просто задерживает выполнение кода, пока документ не будет готов. Это просто анонимная функция. То же самое вы видите в своем вызове $.hover(), который принимает две анонимные функции - одну для определения логики входа, а другую для определения логики выхода.

$(".foo").hover(
  function(){ alert("You entered!"); },
  function(){ alert("You exited!!"); }
);

Иногда эти функции приносят с собой различные локализованные переменные, которые вы можете использовать. Например, если бы вы перебрали множество элементов, используя метод jQuery $.each():

$(".foo").each(function(i,o){
  alert("Currently on " + i); // Currently on 0, Currently on 1...
});

Вы можете видеть, что у нас есть две переменные i и o, доступные нам здесь. i - это индекс текущего элемента, который повторяется, а o - это ссылка на сам элемент.

2 голосов
/ 02 марта 2010

$(somefunction) является сокращением для $(document).ready(somefunction). То, что вы делаете с $(function{}), определяет анонимную функцию, которая будет запускаться после загрузки документа.

0 голосов
/ 02 марта 2010

$(function () {}) - сокращение от jQuery(function () {}), сокращение от $(document).ready(function () {}). То есть он привязывает функцию к событию «Готовность документа», т. е. этот код будет выполнен после завершения загрузки документа. Это то, что вы всегда должны делать.

http://api.jquery.com/jQuery/#jQuery3

0 голосов
/ 02 марта 2010

Они только что написали это так, как вы, наверное, раньше не видели. Метод hover принимает две возможные функции: одну для входа и одну для выхода. Иногда пишется:

$('#dialog_link, ul#icons li').hover(function(){
  //stuff to do on mouseenter
  $(this).addClass('ui-state-hover');
}, function(){
  //stuff to do on mouseleave
  $(this).removeClass('ui-state-hover');
});

Документация: http://api.jquery.com/hover/#hover1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...