{"id":171,"date":"2012-12-29T22:03:56","date_gmt":"2012-12-29T22:03:56","guid":{"rendered":"https:\/\/www.hoost.com.br\/?p=171"},"modified":"2012-12-29T22:03:56","modified_gmt":"2012-12-29T22:03:56","slug":"tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar","status":"publish","type":"post","link":"https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/","title":{"rendered":"Tudo que voc\u00ea gostaria de saber sobre plugins jQuery e ningu\u00e9m teve paci\u00eancia de explicar"},"content":{"rendered":"<p>Ent\u00e3o quer dizer que voc\u00ea anda brincando com jQuery. Volta e meia utiliza uns plugins que mais parecem m\u00e1gica e se duvidar at\u00e9 se aventurou em criar o seu pr\u00f3prio, acertei?<\/p>\n<p>Acontece que, caso voc\u00ea j\u00e1 saiba desenvolver os seus, talvez possam existir melhores formas de escrev\u00ea-lo. Ser\u00e1 que voc\u00ea est\u00e1 seguindo as melhores pr\u00e1ticas? Ser\u00e1 que realmente entende o que est\u00e1 acontecendo por tr\u00e1s de cada linha?<\/p>\n<p><!--more--><\/p>\n<p>Hoje vou tentar responder as d\u00favidas mais frequentes, explorando as melhores pr\u00e1ticas para se construir um plugin. E no fim lhe mostrar um padr\u00e3o interessante que voc\u00ea pode seguir agora que j\u00e1 entendeu os conceitos.<\/p>\n<p>A ideia aqui n\u00e3o \u00e9 simplesmente mostrar como criar um plugin, mas sim como criar direito, explorando tudo o que o jQuery tem de melhor para nos oferecer.<\/p>\n<h2>Por que eu deveria construir um plugin?<\/h2>\n<p>Encapsulamento e reaproveitamento de c\u00f3digo, essas s\u00e3o as palavras-chave. Se voc\u00ea est\u00e1 codificando algo que talvez sirva para futuros projetos, pode ser uma boa encapsular tudo isso em um plugin.<\/p>\n<h2>Entendi, quero criar um! Como faz?<\/h2>\n<p>Existem diversas formas, mas vamos come\u00e7ar com essa:<br \/>\n[cc lang=&#8221;js&#8221;]$.fn.meuPlugin = function() {<br \/>\n\/\/ aqui vem a l\u00f3gica<br \/>\n};[\/cc]<br \/>\nEsse \u00e9 o m\u00ednimo que voc\u00ea precisa para iniciar o desenvolvimento de um plugin, basta adicionar uma propriedade ao\u00a0<strong>$.fn<\/strong>.<\/p>\n<p>Por mais trivial que isso possa parecer, muita gente n\u00e3o entende o que est\u00e1 acontecendo por tr\u00e1s disso exatamente. Portanto, antes de evoluirmos esse padr\u00e3o, vamos recorrer ao\u00a0<a href=\"http:\/\/code.jquery.com\/jquery-1.7.1.js\">c\u00f3digo fonte da biblioteca<\/a>, na sua vers\u00e3o mais recente, para entender de verdade esse pequeno trecho de c\u00f3digo.<\/p>\n<h2>O que significa o cifr\u00e3o ($) ?<\/h2>\n<p>O famoso\u00a0<strong>$<\/strong>\u00a0nada mais \u00e9 do que um \u201capelido\u201d para o objeto\u00a0<strong>jQuery<\/strong>. Pr\u00f3ximo ao fim do<a href=\"http:\/\/code.jquery.com\/jquery-1.7.1.js\">c\u00f3digo fonte da biblioteca<\/a>\u00a0encontramos a seguinte defini\u00e7\u00e3o:<br \/>\n[cc lang=&#8221;js&#8221;]window.jQuery = window.$ = jQuery;[\/cc]<br \/>\nIsso significa que o mesmo objeto em mem\u00f3ria pode ser referenciado de diversas formas:\u00a0<strong>window.jQuery<\/strong>,\u00a0<strong>window.$<\/strong>,\u00a0<strong>jQuery<\/strong>\u00a0ou simplesmente\u00a0<strong>$<\/strong>.<\/p>\n<h2>Qual a diferen\u00e7a entre $.meuPlugin e $.fn.meuPlugin?<\/h2>\n<p>Possivelmente voc\u00ea j\u00e1 se deparou com plugins que n\u00e3o utilizavam a propriedade\u00a0<strong>.fn<\/strong>. Mas afinal, por que eu deveria utilizar o\u00a0<strong>.fn<\/strong>? Por que n\u00e3o apenas\u00a0<strong>$.meuPlugin<\/strong>\u00a0ao inv\u00e9s de\u00a0<strong>$.fn.meuPlugin<\/strong>?<\/p>\n<p>Novamente, ao nos aventurarmos no\u00a0<a href=\"http:\/\/code.jquery.com\/jquery-1.7.1.js\">c\u00f3digo fonte<\/a>\u00a0percebemos, logo nas primeiras linhas, como o objeto\u00a0<strong>jQuery<\/strong>\u00a0\u00e9 definido.<br \/>\n[cc lang=&#8221;js&#8221;]var jQuery = function( selector, context ) {<br \/>\nreturn new jQuery.fn.init( selector, context, rootjQuery );<br \/>\n}[\/cc]<br \/>\nNote que\u00a0<strong>jQuery<\/strong>\u00a0\u00e9 uma fun\u00e7\u00e3o e no Javascript uma fun\u00e7\u00e3o \u00e9 tamb\u00e9m um objeto do tipo\u00a0<strong>Function<\/strong>. Por isso\u00a0<strong>jQuery.meuPlugin<\/strong>\u00a0(ou\u00a0<strong>$.meuPlugin<\/strong>) ir\u00e1 atribuir\u00a0<strong>meuPlugin<\/strong>para o objeto jQuery do tipo\u00a0<strong>Function<\/strong>.<\/p>\n<p>Dito isso, voltamos ao\u00a0<a href=\"http:\/\/code.jquery.com\/jquery-latest.js\">c\u00f3digo fonte<\/a>\u00a0e veremos que\u00a0<strong>jQuery.fn<\/strong>\u00a0\u00e9 a mesma coisa que dizer\u00a0<strong>jQuery.prototype<\/strong>.<br \/>\n[cc lang=&#8221;js&#8221;]jQuery.fn = jQuery.prototype;[\/cc]<br \/>\nPortanto, a cada vez que voc\u00ea atribuir uma fun\u00e7\u00e3o (ou propriedade) para\u00a0<strong>jQuery.fn<\/strong>, como em\u00a0<strong>$.fn.meuPlugin<\/strong>, a fun\u00e7\u00e3o estar\u00e1 dispon\u00edvel para todas as inst\u00e2ncias desse objeto.<\/p>\n<p>Isso \u00e9 importante, pois quando voc\u00ea invoca a fun\u00e7\u00e3o\u00a0<strong>$()<\/strong>, como em\u00a0<strong>$(\u201c#algumID\u201d)<\/strong>, uma nova inst\u00e2ncia \u00e9 criada nessa linha:<br \/>\n[cc lang=&#8221;js&#8221;]return new jQuery.fn.init( selector, context );[\/cc]<br \/>\nE essa inst\u00e2ncia ter\u00e1 todos os m\u00e9todos que atribuirmos ao\u00a0<strong>prototype<\/strong>, mas n\u00e3o todos os m\u00e9todos que foram atribu\u00eddos direto ao objeto\u00a0<strong>Function<\/strong>.<\/p>\n<p>Logo, v\u00e1 de\u00a0<strong>.fn<\/strong>.<\/p>\n<h2>Evite conflitos<\/h2>\n<p>Sabia que existem outras bibliotecas Javascript que tamb\u00e9m utilizam o s\u00edmbolo cifr\u00e3o para referenciar seus objetos? Pois \u00e9, isso pode lhe causar uma baita dor de cabe\u00e7a se utilizar apenas aquele primeiro padr\u00e3o proposto.<\/p>\n<p>Logo, uma boa pr\u00e1tica seria encapsular a l\u00f3gica do plugin em uma fun\u00e7\u00e3o an\u00f4nima. Assim, garantimos que n\u00e3o ir\u00e1 haver conflito entre o\u00a0<strong>$<\/strong>\u00a0do jQuery com o\u00a0<strong>$<\/strong>\u00a0de outras bibliotecas.<br \/>\n[cc lang=&#8221;js&#8221;](function( $ ){<br \/>\n$.fn.meuPlugin = function() {<br \/>\n\/\/ aqui vem a l\u00f3gica<br \/>\n};<br \/>\n})( jQuery );[\/cc]<br \/>\nDessa forma mapeamos o\u00a0<strong>$<\/strong>\u00a0para que n\u00e3o seja afetado por nada fora desse escopo.<\/p>\n<h2>N\u00e3o quebre a corrente<\/h2>\n<p>Ent\u00e3o, voc\u00ea j\u00e1 entendeu como funcionam algumas coisas, vamos criar nosso primeiro plugin! Come\u00e7aremos com o cl\u00e1ssico exemplo de um Tooltip (aquelas caixinhas que aparecem no mouseover).<\/p>\n<p>Criamos ent\u00e3o a chamada para o plugin a partir de determinado seletor:<br \/>\n[cc lang=&#8221;js&#8221;]$(function() {<br \/>\n$(\u201c.BlaBlaBla\u201d).tooltip();<br \/>\n});[\/cc]<br \/>\nE c\u00f3digo do nosso plugin ficar\u00e1 definido assim:<br \/>\n[cc lang=&#8221;js&#8221;](function( $ ){<br \/>\n$.fn.tooltip = function() {<br \/>\nthis.css({ background: \u2018yellow\u2019 });<br \/>\n};<br \/>\n})( jQuery );[\/cc]<br \/>\nAparentemente tudo certo, j\u00e1 que o plugin funciona direitinho, certo?<\/p>\n<p>Na verdade n\u00e3o, pois dessa forma estamos ferindo um dos princ\u00edpios importantes que diferem os plugins bons dos ruins, e esse princ\u00edpio se chama encadeamento.<\/p>\n<p>No jQuery \u00e9 muito comum vermos declara\u00e7\u00f5es do tipo:<br \/>\n[cc lang=&#8221;js&#8221;]$(\u2018div\u2019).show().addClass(\u2018BlaBlaBla\u2019).fadeIn();[\/cc]<br \/>\nIsso, porque \u00e9 poss\u00edvel encadear diversas chamadas, a um mesmo seletor. E uma excelente pr\u00e1tica por sinal, j\u00e1 que n\u00e3o criamos diversas inst\u00e2ncias como em:<br \/>\n[cc lang=&#8221;js&#8221;]$(\u2018div\u2019).show();<br \/>\n$(\u2018div\u2019).addClass(\u2018BlaBlaBla\u2019);<br \/>\n$(\u2018div\u2019).fadeIn();[\/cc]<br \/>\nPara permitirmos comportamento similar com nosso plugin basta retornar o\u00a0<strong>this<\/strong>.<br \/>\n[cc lang=&#8221;js&#8221;](function( $ ){<br \/>\n$.fn.tooltip = function() {<br \/>\nreturn this.each (function() {<br \/>\n$(this).css({ background: \u2018yellow\u2019 });<br \/>\n});<br \/>\n};<br \/>\n})( jQuery );[\/cc]<br \/>\nAssim, al\u00e9m de garantirmos o encadeamento, tamb\u00e9m manipulamos a cole\u00e7\u00e3o passada para o plugin atrav\u00e9s do m\u00e9todo\u00a0<strong>each<\/strong>, muito similar a um loop com\u00a0<strong>for<\/strong>\u00a0por exemplo.<\/p>\n<h2>Como passar par\u00e2metros e lidar com eles depois?<\/h2>\n<p>E que tal se evolu\u00edssemos nosso plugin e resolvessemos passar como par\u00e2metro a cor de fundo do nosso elemento.<br \/>\n[cc lang=&#8221;js&#8221;]$(function() {<br \/>\n$(\u201c.BlaBlaBla\u201d).tooltip({<br \/>\n\u2018corDeFundo\u2019 : \u2018blue\u2019<br \/>\n});<br \/>\n}); [\/cc]<br \/>\nAgora preparamos nosso plugin para receber os par\u00e2metros atrav\u00e9s da vari\u00e1vel<strong>options<\/strong>\u00a0e aplicamos a propriedade\u00a0<strong>corDeFundo<\/strong>\u00a0no\u00a0<strong>background<\/strong>.<br \/>\n[cc lang=&#8221;js&#8221;](function( $ ){<br \/>\n$.fn.tooltip = function(options) {<br \/>\nreturn this.each (function() {<br \/>\n$(this).css({ background: options.corDeFundo });<br \/>\n});<br \/>\n};<br \/>\n})( jQuery );[\/cc]<br \/>\nMaravilha, funcionou! Mas o que acontece se voc\u00ea resolve mais tarde n\u00e3o passar como par\u00e2metro a cor de fundo? Nosso plugin quebra.<\/p>\n<p>Portanto, n\u00e3o podemos nos esquecer de que precisamos nos preparar para receber esse conjunto de op\u00e7\u00f5es e assegurar que, caso n\u00e3o seja passado nenhum valor como par\u00e2metro, n\u00f3s possamos lidar com valores padr\u00e3o.<br \/>\n[cc lang=&#8221;js&#8221;](function( $ ){<br \/>\n$.fn.tooltip = function(options) {<\/p>\n<p>var defaults = {<br \/>\n\u2018corDeFundo\u2019 : \u2018yellow\u2019<br \/>\n};<\/p>\n<p>var settings = $.extend( {}, defaults, options );<\/p>\n<p>return this.each(function() {<br \/>\n$(this).css({ background: settings.corDeFundo });<br \/>\n});<\/p>\n<p>};<br \/>\n})( jQuery );[\/cc]<br \/>\nPara isso recorremos a fun\u00e7\u00e3o\u00a0<a href=\"http:\/\/api.jquery.com\/jQuery.extend\/\">$.extend<\/a>\u00a0que ir\u00e1 buscar os valores passados pela vari\u00e1vel\u00a0<strong>options<\/strong>\u00a0e mesclar com os valores definidos na vari\u00e1vel\u00a0<strong>defaults<\/strong>, armazenando em outra vari\u00e1vel chamada\u00a0<strong>settings<\/strong>.<\/p>\n<h2>A procura da batida perfeita<\/h2>\n<p>Esse \u00e9 s\u00f3 o come\u00e7o para voc\u00ea que deseja se aprofundar um pouquinho mais nessa arte de criar plugins, para entender mais visite o\u00a0<a href=\"http:\/\/docs.jquery.com\/Plugins\/Authoring\">guia oficial<\/a>.<\/p>\n<p>Mesmo que a ideia de se formar um padr\u00e3o \u00fanico para criar plugins seja ut\u00f3pico, sugiro fortemente que d\u00ea uma olhadinha no\u00a0<a href=\"http:\/\/jqueryboilerplate.com\/\">jQuery Boilerplate<\/a>, l\u00e1 voc\u00ea vai encontrar um padr\u00e3o bem s\u00f3lido para iniciar seus projetos, sem contar que a vers\u00e3o traduzida para portugu\u00eas foi lan\u00e7ada hoje!<\/p>\n<p>Mas se o buraco for mais em baixo e voc\u00ea for lidar com plugins\u00a0<a href=\"http:\/\/en.wikipedia.org\/wiki\/State_(computer_science\">stateful<\/a>\u00a0que controlam o estado dos objetos, confira o\u00a0<a href=\"http:\/\/wiki.jqueryui.com\/w\/page\/12138135\/Widget%20factory\">jQuery UI Widget Factory<\/a>.<\/p>\n<p>Lembre-se que o jQuery n\u00e3o \u00e9 apenas uma caixa preta que faz m\u00e1gicas pra voc\u00ea. Aventure-se no c\u00f3digo fonte e ver\u00e1 que n\u00e3o \u00e9 nada muito diferente do que voc\u00ea j\u00e1 faz com JavaScript puro.<\/p>\n<p>E \u00e9 isso, espero que depois desse artigo, voc\u00ea tenha evoluido de um simples \u201cmanipulador de plugins\u201d para um criador de fato. At\u00e9 a pr\u00f3xima!<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p>Fonte:\u00a0<a href=\"http:\/\/tableless.com.br\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/\" target=\"_blank\">http:\/\/tableless.com.br\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ent\u00e3o quer dizer que voc\u00ea anda brincando com jQuery. Volta e meia utiliza uns plugins que mais parecem m\u00e1gica e se duvidar at\u00e9 se aventurou em criar o seu pr\u00f3prio, acertei? Acontece que, caso voc\u00ea j\u00e1 saiba desenvolver os seus, talvez possam existir melhores formas de escrev\u00ea-lo. Ser\u00e1 que voc\u00ea est\u00e1 seguindo as melhores pr\u00e1ticas? [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":11307,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,2,23,18],"tags":[19,21,22],"class_list":["post-171","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-curiosidades","category-geral","category-programacao","category-tecnologia","tag-javascript","tag-jquery","tag-plugin-jquery"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Tudo que voc\u00ea gostaria de saber sobre plugins jQuery e ningu\u00e9m teve paci\u00eancia de explicar - Hoost Blog<\/title>\n<meta name=\"description\" content=\"Ent\u00e3o quer dizer que voc\u00ea anda brincando com jQuery. Volta e meia utiliza uns plugins que mais parecem m\u00e1gica e se duvidar at\u00e9 se aventurou em criar o seu\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tudo que voc\u00ea gostaria de saber sobre plugins jQuery e ningu\u00e9m teve paci\u00eancia de explicar - Hoost Blog\" \/>\n<meta property=\"og:description\" content=\"Ent\u00e3o quer dizer que voc\u00ea anda brincando com jQuery. Volta e meia utiliza uns plugins que mais parecem m\u00e1gica e se duvidar at\u00e9 se aventurou em criar o seu\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/\" \/>\n<meta property=\"og:site_name\" content=\"Hoost Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/hoostcom\" \/>\n<meta property=\"article:published_time\" content=\"2012-12-29T22:03:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hoost.com.br\/blog\/wp-content\/uploads\/2026\/03\/default.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t<meta property=\"og:image:height\" content=\"522\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"hoostcom\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@hoostcom\" \/>\n<meta name=\"twitter:site\" content=\"@hoostcom\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"hoostcom\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/\"},\"author\":{\"name\":\"hoostcom\",\"@id\":\"https:\/\/www.hoost.com.br\/blog\/#\/schema\/person\/c28db8fdcef7d362b8c515eb3bc0569f\"},\"headline\":\"Tudo que voc\u00ea gostaria de saber sobre plugins jQuery e ningu\u00e9m teve paci\u00eancia de explicar\",\"datePublished\":\"2012-12-29T22:03:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/\"},\"wordCount\":1310,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.hoost.com.br\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/#primaryimage\"},\"thumbnailUrl\":\"\",\"keywords\":[\"Javascript\",\"jQuery\",\"Plugin jQuery\"],\"articleSection\":[\"Curiosidades\",\"Geral\",\"Programa\u00e7\u00e3o\",\"Tecnologia\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/\",\"url\":\"https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/\",\"name\":\"Tudo que voc\u00ea gostaria de saber sobre plugins jQuery e ningu\u00e9m teve paci\u00eancia de explicar - Hoost Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.hoost.com.br\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/#primaryimage\"},\"thumbnailUrl\":\"\",\"datePublished\":\"2012-12-29T22:03:56+00:00\",\"description\":\"Ent\u00e3o quer dizer que voc\u00ea anda brincando com jQuery. Volta e meia utiliza uns plugins que mais parecem m\u00e1gica e se duvidar at\u00e9 se aventurou em criar o seu\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/#primaryimage\",\"url\":\"\",\"contentUrl\":\"\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hoost.com.br\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tudo que voc\u00ea gostaria de saber sobre plugins jQuery e ningu\u00e9m teve paci\u00eancia de explicar\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.hoost.com.br\/blog\/#website\",\"url\":\"https:\/\/www.hoost.com.br\/blog\/\",\"name\":\"Blog - Hoost\",\"description\":\"Inspira\u00e7\u00e3o, tecnologia e novidades para transformar seu neg\u00f3cio.\",\"publisher\":{\"@id\":\"https:\/\/www.hoost.com.br\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.hoost.com.br\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.hoost.com.br\/blog\/#organization\",\"name\":\"Blog - Hoost\",\"alternateName\":\"Blog Hoost\",\"url\":\"https:\/\/www.hoost.com.br\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.hoost.com.br\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.hoost.com.br\/blog\/wp-content\/uploads\/2025\/06\/cropped-270x270-1.png\",\"contentUrl\":\"https:\/\/www.hoost.com.br\/blog\/wp-content\/uploads\/2025\/06\/cropped-270x270-1.png\",\"width\":512,\"height\":512,\"caption\":\"Blog - Hoost\"},\"image\":{\"@id\":\"https:\/\/www.hoost.com.br\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/facebook.com\/hoostcom\",\"https:\/\/x.com\/hoostcom\",\"https:\/\/www.instagram.com\/hoostcom\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.hoost.com.br\/blog\/#\/schema\/person\/c28db8fdcef7d362b8c515eb3bc0569f\",\"name\":\"hoostcom\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.hoost.com.br\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f004202709020842e828acdedd3c513def9a2a3728340b0e215e3ba84c73ec5a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f004202709020842e828acdedd3c513def9a2a3728340b0e215e3ba84c73ec5a?s=96&d=mm&r=g\",\"caption\":\"hoostcom\"},\"sameAs\":[\"http:\/\/localhost\/hoost\/v2\/blog\"],\"url\":\"https:\/\/www.hoost.com.br\/blog\/author\/hoostcom\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tudo que voc\u00ea gostaria de saber sobre plugins jQuery e ningu\u00e9m teve paci\u00eancia de explicar - Hoost Blog","description":"Ent\u00e3o quer dizer que voc\u00ea anda brincando com jQuery. Volta e meia utiliza uns plugins que mais parecem m\u00e1gica e se duvidar at\u00e9 se aventurou em criar o seu","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/","og_locale":"pt_BR","og_type":"article","og_title":"Tudo que voc\u00ea gostaria de saber sobre plugins jQuery e ningu\u00e9m teve paci\u00eancia de explicar - Hoost Blog","og_description":"Ent\u00e3o quer dizer que voc\u00ea anda brincando com jQuery. Volta e meia utiliza uns plugins que mais parecem m\u00e1gica e se duvidar at\u00e9 se aventurou em criar o seu","og_url":"https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/","og_site_name":"Hoost Blog","article_publisher":"https:\/\/facebook.com\/hoostcom","article_published_time":"2012-12-29T22:03:56+00:00","og_image":[{"width":1000,"height":522,"url":"https:\/\/www.hoost.com.br\/blog\/wp-content\/uploads\/2026\/03\/default.png","type":"image\/png"}],"author":"hoostcom","twitter_card":"summary_large_image","twitter_creator":"@hoostcom","twitter_site":"@hoostcom","twitter_misc":{"Escrito por":"hoostcom","Est. tempo de leitura":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/#article","isPartOf":{"@id":"https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/"},"author":{"name":"hoostcom","@id":"https:\/\/www.hoost.com.br\/blog\/#\/schema\/person\/c28db8fdcef7d362b8c515eb3bc0569f"},"headline":"Tudo que voc\u00ea gostaria de saber sobre plugins jQuery e ningu\u00e9m teve paci\u00eancia de explicar","datePublished":"2012-12-29T22:03:56+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/"},"wordCount":1310,"commentCount":0,"publisher":{"@id":"https:\/\/www.hoost.com.br\/blog\/#organization"},"image":{"@id":"https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/#primaryimage"},"thumbnailUrl":"","keywords":["Javascript","jQuery","Plugin jQuery"],"articleSection":["Curiosidades","Geral","Programa\u00e7\u00e3o","Tecnologia"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/","url":"https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/","name":"Tudo que voc\u00ea gostaria de saber sobre plugins jQuery e ningu\u00e9m teve paci\u00eancia de explicar - Hoost Blog","isPartOf":{"@id":"https:\/\/www.hoost.com.br\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/#primaryimage"},"image":{"@id":"https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/#primaryimage"},"thumbnailUrl":"","datePublished":"2012-12-29T22:03:56+00:00","description":"Ent\u00e3o quer dizer que voc\u00ea anda brincando com jQuery. Volta e meia utiliza uns plugins que mais parecem m\u00e1gica e se duvidar at\u00e9 se aventurou em criar o seu","breadcrumb":{"@id":"https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/#primaryimage","url":"","contentUrl":""},{"@type":"BreadcrumbList","@id":"https:\/\/www.hoost.com.br\/blog\/tudo-que-voce-gostaria-de-saber-sobre-plugins-jquery-e-ninguem-teve-paciencia-de-explicar\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hoost.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"Tudo que voc\u00ea gostaria de saber sobre plugins jQuery e ningu\u00e9m teve paci\u00eancia de explicar"}]},{"@type":"WebSite","@id":"https:\/\/www.hoost.com.br\/blog\/#website","url":"https:\/\/www.hoost.com.br\/blog\/","name":"Blog - Hoost","description":"Inspira\u00e7\u00e3o, tecnologia e novidades para transformar seu neg\u00f3cio.","publisher":{"@id":"https:\/\/www.hoost.com.br\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hoost.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.hoost.com.br\/blog\/#organization","name":"Blog - Hoost","alternateName":"Blog Hoost","url":"https:\/\/www.hoost.com.br\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.hoost.com.br\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hoost.com.br\/blog\/wp-content\/uploads\/2025\/06\/cropped-270x270-1.png","contentUrl":"https:\/\/www.hoost.com.br\/blog\/wp-content\/uploads\/2025\/06\/cropped-270x270-1.png","width":512,"height":512,"caption":"Blog - Hoost"},"image":{"@id":"https:\/\/www.hoost.com.br\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/facebook.com\/hoostcom","https:\/\/x.com\/hoostcom","https:\/\/www.instagram.com\/hoostcom"]},{"@type":"Person","@id":"https:\/\/www.hoost.com.br\/blog\/#\/schema\/person\/c28db8fdcef7d362b8c515eb3bc0569f","name":"hoostcom","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.hoost.com.br\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/f004202709020842e828acdedd3c513def9a2a3728340b0e215e3ba84c73ec5a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f004202709020842e828acdedd3c513def9a2a3728340b0e215e3ba84c73ec5a?s=96&d=mm&r=g","caption":"hoostcom"},"sameAs":["http:\/\/localhost\/hoost\/v2\/blog"],"url":"https:\/\/www.hoost.com.br\/blog\/author\/hoostcom\/"}]}},"_links":{"self":[{"href":"https:\/\/www.hoost.com.br\/blog\/wp-json\/wp\/v2\/posts\/171","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hoost.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hoost.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hoost.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hoost.com.br\/blog\/wp-json\/wp\/v2\/comments?post=171"}],"version-history":[{"count":0,"href":"https:\/\/www.hoost.com.br\/blog\/wp-json\/wp\/v2\/posts\/171\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hoost.com.br\/blog\/wp-json\/"}],"wp:attachment":[{"href":"https:\/\/www.hoost.com.br\/blog\/wp-json\/wp\/v2\/media?parent=171"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hoost.com.br\/blog\/wp-json\/wp\/v2\/categories?post=171"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hoost.com.br\/blog\/wp-json\/wp\/v2\/tags?post=171"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}