Ответ 1
Это должно работать:
jQuery.MessageBox = function() {
var show = function() {
// something...
}
var hide = function() {
// something...
}
return {
show: show,
hide: hide
}
}
Я знаю, что я могу создавать пользовательские плагины jQuery с помощью конструктора $.fn.myFunction
и вызова пользовательской функции в JavaScript как $('selector').myFunction()
.
Однако для проекта, над которым я сейчас работаю, мне нужно определить функцию, которая не требует, чтобы селектор работал. Это фактически для плагина MessageBox, который будет действовать аналогично С# MessageBox
. Таким образом, я идеально хотел бы создать функцию как MessageBox
, а затем вызвать ее следующим образом:
var myMessage = $.MessageBox();
, а затем, в свою очередь, myMessage.Show();
Обратите внимание на отсутствие селекторных балансиров в ссылке jQuery в начале вызова функции.
Любые советы по наилучшей практике для этого будут с благодарностью приняты.
Это должно работать:
jQuery.MessageBox = function() {
var show = function() {
// something...
}
var hide = function() {
// something...
}
return {
show: show,
hide: hide
}
}
relipse имеет хорошую точку - поскольку вы загромождаете основное пространство имен. Решение, если у вас больше объектов, чем просто, например. MessageBox должен создать ваше собственное пространство имен следующим образом:
jQuery.myLib = {
MessageBox: function() {
var show = function() {
// something...
}
var hide = function() {
// something...
}
return {
show: show,
hide: hide
}
}
}
Это означает, что вы занимаете одно место в основном пространстве имен (имя вашей библиотеки, в данном случае myLib
). Вы бы назвали это следующим образом:
jQuery.myLib.MessageBox.show()
(function ($) {
$.MessageBox = function () {
var show = function () {
// something...
}
var hide = function () {
// something...
}
return {
show: show,
hide: hide
}
}
})(Jquery);
Я думаю, что вам лучше использовать функцию непосредственного вызова, чтобы избежать столкновения с пространствами имен.