Вы можете сделать то, что вы хотите, разделить на части довольно легко с помощью нескольких переключателей:
$.fn.myPlugin = function() {
return this.each(function() {
switch(this.nodeName) {
case "INPUT":
switch(this.type) {
case "radio":
$(this).change(function() { .... });
break;
case "text":
$(this).change(function() { .... });
break;
/*password, etc....*/
}
break;
case "SELECT":
$(this).change(function() { .... });
break;
case "TEXTAREA":
$(this).change(function() { .... });
break;
}
});
};
Теперь вопрос о том, является ли это лучшим подходом, безусловно, подлежит обсуждению ... это зависит от того, будет ли у вас уникальноекаждый или некоторые из них имеют общее поведение, и в этом случае вы, вероятно, захотите определить общие функции в замыкании и сослаться на них, например:
(function($) {
function method1() { ... }
function method2() { ... }
function method3() { ... }
$.fn.myPlugin = function() {
return this.each(function() {
switch(this.nodeName) {
case "INPUT":
switch(this.type) {
case "radio":
$(this).change(method1);
break;
case "text":
$(this).change(method3);
break;
/*password, etc....*/
}
break;
case "SELECT":
$(this).change(method1);
break;
case "TEXTAREA":
$(this).change(method2);
break;
}
});
};
})(jQuery);
Вы можете сделать это как минимум 20 способами, этоЭто просто предложение, если каждый элемент и тип имеет определенное поведение, которое звучит как случай из вашего вопроса.Если это не просто игнорировать меня:)