Вы можете инкапсулировать свои функции, чтобы делать то, что вы хотите, например так:
jQuery.fn.myMethod = function() {
return this.each(function(){
doSomething(jQuery(this).attr("id"));
});
function doSomething(id){
//do something
}
function doSomethingElse(){
// some code
}
};
Вы можете просмотреть короткую демонстрацию здесь
"Я мог бы переместить всев функции myMethod, но она создаст функцию длиной в 100 строк, и люди возненавидят меня за это »..... почему?
Код должен быть где-то определен, если вы не хотите, чтобы он был доступен извне, есть несколько способов, но я не понимаю, почемукому-то не нравится, что вы делаете именно это.Все дело в сфере действия и в том, где вы хотите что-то, если вы не объявляете это несколько раз и выставляете только то, что хотите, я не вижу никаких проблем.
Есть несколько стилей для объявления этого,некоторые с тем же эффектом, вариант, который я дал, является одним из многих, но размещение вещей внутри myMethod
является вполне разумным подходом.
Чтобы быть более полным, вот еще одна альтернатива :
(function($) {
function doSomething(id){
//do something, e.g: doSomethingElse('bob');
}
function doSomethingElse(str){
//some code
}
$.fn.myMethod = function() {
return this.each(function(){
doSomething(jQuery(this).attr("id"));
});
};
})(jQuery);
или другое :
(function($) {
var me = {
doSomething: function(id){
//do something, e.g: this.doSomethingElse('bob');
},
doSomethingElse: function(str){
//some code
}
};
$.fn.myMethod = function() {
return this.each(function(){
me.doSomething(jQuery(this).attr("id"));
});
};
})(jQuery);
Статьи по теме: