Esto parece que debería ser obvio, pero no puedo entender cómo usar correctamente los nombres de funciones con espacios de nombres (punteados) en jQuery.fn.
Más precisamente, usar this en una función incrustada en un objeto devuelve el objeto. No es el objeto jQuery al que se adjuntó a través de .fn
Un ejemplo simple que funciona, sin usar funciones de espacio de nombres: ( Ejemplo de trabajo de lo siguiente)
$.fn.isBigText=function(nBytes) { let ttext=this.val(); if (this.val().length > nBytes ) alert('Too big: '+ttext); } $.fn.isSmallText=function(nBytes) { let ttext=this.val(); if (ttext.length < nBytes ) alert('Too small: '+ttext); } function checkSize(evt) { // alert if too small or big. let jqText=$('#myTextArea') ; // should use evt, but for this example I am being explicit jqText.isBigText(20); jqText.isSmallText(10); } ... <textarea cols="80" rows="1" id="myTextArea" onChange="checkSize(this)">fill this in </textarea>Y un ejemplo de espacio de nombres que NO funciona. No definir una función .val() provoca un error "TypeError: this.val is not a function". Entonces, para fines ilustrativos, defino un .val() dentro de myFuncsDef que siempre devuelve "Este no es el val() que estaba buscando".
// this version does not work var myFuncsDef={ val: function() {return 'This is not the val() I was looking for! '}, bigText:function(nBytes) { let ttext=this.val(); if (this.val().length > nBytes ) alert('Too big: '+ttext); } , smallText:function(nBytes) { let ttext=this.val(); if (ttext.length < nBytes ) alert('Too small: '+ttext); } } $.fn.myFuncs=myFuncsDef ; function checkSizeNs(evt) { // alert if too small or big (namespaced version) let jqText=$('#myTextAreaNs') ; // should use evt, but for this example I am being explicit jqText.myFuncs.bigText(20); jqText.myFuncs.smallText(10); } ... <textarea cols="30" rows="1" id="myTextAreaNs" onChange="checkSizeNs(this)">Fill this </textarea>¿Quizás haya una forma de guardar el valor adecuado de esto (el jqText) antes de llamar a una función interna (bigText o smallText)?
Por supuesto, podría usar algo como myFuncs_bigText en lugar de myFuncs.bigText ... pero eso parece un paso atrás.