Разница между функциями jquery и обычными функциями javascript? - PullRequest
2 голосов
/ 29 декабря 2011

Какой смысл писать такие jquery-функции:

(function( $ ) {
  $.fn.simple_hide_function = function() {
  var $t = this;
  $t.hide();
  };
})( jQuery );

$(window).load(function () {
$('#myId').simple_hide_function();
});

Почему бы не сделать это так:

function simple_hide_function(id){
id.hide();
};

$(window).load(function () {
var my_id = $('#my_id');
simple_hide_function(my_id);
});

Добавлен вопрос:

Будет ли это проблемой?

function simple_hide_function(id){
id.hide();
};

$(window).load(function () {
var my_id1 = $('#my_id1'),
my_id2 = $('#my_id2'),
my_id3 = $('#my_id3');
simple_hide_function(my_id1);
simple_hide_function(my_id2);
simple_hide_function(my_id3);
});

Ответы [ 2 ]

4 голосов
/ 29 декабря 2011

В версии плагина вы создаете новую функцию и присоединяете ее к объекту jQuery. Сделав свою функцию членом объекта, вы можете воспользоваться такими вещами, как цепочка jQuery, когда несколько функций вызываются для одного и того же объекта подряд.

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

Однако, как вы обнаружили, функциональных отличий нет. Оба выполнятся нормально.

0 голосов
/ 29 декабря 2011

Я думаю, что основная идея в том, что вы не загромождаете глобальное пространство имен.Во втором примере simple_hide_function принадлежит окну и может вызвать конфликт имен, но в первом примере это локальная переменная.

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