{"id":231111,"date":"2022-12-08T17:12:00","date_gmt":"2022-12-08T14:12:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231111"},"modified":"2022-12-07T11:54:33","modified_gmt":"2022-12-07T08:54:33","slug":"il-perche-e-il-come-degli-eventi-jquery-personalizzati","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/il-perche-e-il-come-degli-eventi-jquery-personalizzati\/","title":{"rendered":"Il perch\u00e9 e il come degli eventi jQuery personalizzati"},"content":{"rendered":"\n<p>Fin dalla versione 1.0, jQuery ha fornito una funzione di <a href=\"https:\/\/api.jquery.com\/trigger\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">trigger<\/a> che ci consente di:<\/p>\n<blockquote>\n<p>Esegui tutti i gestori e i comportamenti associati agli elementi corrispondenti per il tipo di evento specificato.<\/p>\n<\/blockquote>\n<p>Ma \u00e8 stato solo con la 1.3 che questa particolare funzione \u00e8 diventata significativamente pi\u00f9 utile, almeno per quanto mi riguarda. Lo dico perch\u00e9 \u00e8 stato allora che abbiamo acquisito la capacit\u00e0 di definire eventi personalizzati e quindi impostare gestori per loro.<\/p>\n<p>Qual \u00e8, tuttavia, un probabile caso d&#8217;uso in cui gli eventi jQuery personalizzati sono utili nel contesto di WordPress? Dalla parte superiore della tua testa, potresti essere in grado di inventarne molti. O forse no.<\/p>\n<p>\u00c8 stato solo di recente che li ho usati molto pi\u00f9 del solito. Quindi ho pensato di condividere come li sto usando se per ora altro motivo oltre a mostrarti come collegarli al tuo lavoro.<\/p>\n<h2>Eventi jQuery personalizzati<\/h2>\n<p>Se hai esperienza con JavaScript, vanilla o meno, probabilmente hai familiarit\u00e0 con i gestori di eventi di base. Cio\u00e8, quando qualcuno fa clic su un elemento, abbiamo una funzione impostata per attivarsi che fa qualcosa.<\/p>\n<p>Gli eventi jQuery personalizzati sono molto simili a questo, tranne che questi sono eventi che definiamo. Ci\u00f2 significa che non dobbiamo fare affidamento su quando qualcuno sposta il mouse su un elemento o quando fa clic su un elemento.<\/p>\n<p>Invece, possiamo attivare un evento e quindi impostare un gestore per rispondere in modo appropriato. Ecco un esempio.<\/p>\n<h3>Preparazione per un evento personalizzato<\/h3>\n<p>Supponiamo che tu stia lavorando a un progetto e che abbia una pagina di amministrazione responsabile del recupero dei dati da un&#8217;API di terze parti. Il flusso di controllo sarebbe simile a questo:<\/p>\n<ol>\n<li>L&#8217;utente fa clic su un pulsante,<\/li>\n<li>Viene avviata una richiesta Ajax e richiede informazioni a terze parti,<\/li>\n<li>Durante la richiesta, i pulsanti sullo schermo dovrebbero essere disabilitati,<\/li>\n<li>Una volta completata la richiesta, \u00e8 possibile riattivare i pulsanti,<\/li>\n<li>Facoltativamente, un messaggio di stato pu\u00f2 essere scritto sullo schermo.<\/li>\n<\/ol>\n<p>Perch\u00e9 ci\u00f2 avvenga, si aspetta che ci sia almeno un pulsante (come in un elemento di <strong>input) e un campo di testo o area di testo<\/strong> <strong>opzionale<\/strong> in cui pu\u00f2 verificarsi lo stato della richiesta.<\/p>\n<p>Una volta che l&#8217;utente fa clic sull&#8217;evento, possiamo attivare un evento personalizzato. Possiamo chiamare questo evento <strong>acme.ajax.processing<\/strong>. Quindi, possiamo quindi utilizzare la funzione <a href=\"https:\/\/api.jquery.com\/jquery.ajax\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">done<\/a> fornita da jQuery per gestire tutto ci\u00f2 che vogliamo ripulire in seguito oppure possiamo utilizzare la nostra funzione personalizzata se c&#8217;\u00e8 qualcosa che vogliamo gestire anche alla fine.<\/p>\n<p>Per questo entrambi, esamineremo entrambi. Quindi avremo anche un evento chiamato <strong>acme.ajax.complete<\/strong>.<\/p>\n<p>Quindi ci occupiamo di:<\/p>\n<ul>\n<li>creare un evento personalizzato,<\/li>\n<li>innescandolo,<\/li>\n<li>impostare un gestore di eventi per esso,<\/li>\n<li>terminando una volta completata la richiesta.<\/li>\n<\/ul>\n<p>Ed \u00e8 quello che faremo.<\/p>\n<h3>Definizione di un evento personalizzato<\/h3>\n<p>Quindi, quando un utente fa clic su un pulsante, viene eseguita una richiesta Ajax. Allo stesso tempo, questo attiver\u00e0 anche l&#8217; evento <strong>acme.ajax.processing<\/strong> che avr\u00e0 il suo gestore di eventi.<\/p>\n<p>Quindi, prima, creiamo la richiesta Ajax. <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/61bd05c60b40d9f3ecd9eb81e5cb3f86#file-00-button-handler-js\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Per questo<\/a><\/strong>, suppongo che il pulsante responsabile dell&#8217;attivazione della richiesta Ajax sia semplicemente denominato <strong>$button:<\/strong><\/p>\n<pre><code>$button.on('click', function(evt) {\n  evt.preventDefault();\n  $(document).trigger('acme.ajax.processing');\n\n  $.get(ajaxurl, {\n    \/\/ Your action and security measures here.\n  }, function(response) {\n    \/\/ Your response behavior here.\n  });\n});<\/code><\/pre>\n<p>Si noti che la prima cosa che vogliamo fare \u00e8 attivare l&#8217;evento di elaborazione, quindi fare la richiesta.<\/p>\n<h3>Gestione di un evento personalizzato<\/h3>\n<p>Successivamente, vogliamo assicurarci di avere un gestore di eventi impostato per disabilitare il pulsante mentre \u00e8 in corso la richiesta.<\/p>\n<p>Questo \u00e8 facile da fare e per mantenerlo semplice, e ho intenzione di <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/61bd05c60b40d9f3ecd9eb81e5cb3f86#file-01-disable-button-js\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">disabilitare il pulsante:<\/a><\/strong><\/p>\n<pre><code>$(document).on('acme.ajax.processing', function() {\n  $button.attr('disabled', 'disabled');\n});<\/code><\/pre>\n<p>Facile, vero?<\/p>\n<h3>Gestione di un altro evento personalizzato<\/h3>\n<p>Successivamente, dobbiamo gestire la situazione quando la richiesta Ajax \u00e8 stata completata. Quindi dobbiamo assicurarci di attivare l&#8217;evento e quindi dobbiamo gestire l&#8217;evento.<\/p>\n<p>Attivare l&#8217;evento <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/61bd05c60b40d9f3ecd9eb81e5cb3f86#file-02-request-complete-js\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">\u00e8 facile:<\/a><\/strong><\/p>\n<pre><code>$button.on('click', function(evt) {\n  evt.preventDefault();\n  $(document).trigger('acme.ajax.processing');\n\n  $.get(ajaxurl, {\n    \/\/ Your action and security measures here.\n  }, function(response) {\n    \/\/ Your response behavior here.\n  })\n  .done(function() {\n     $(document).trigger('acme.ajax.complete');\n  });\n});<\/code><\/pre>\n<p>E la gestione dell&#8217;evento pu\u00f2 essere modificata con il codice <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/61bd05c60b40d9f3ecd9eb81e5cb3f86#file-03-enable-button-js\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">che gi\u00e0 abbiamo:<\/a><\/strong><\/p>\n<pre><code>$(document)\n  .on('acme.ajax.processing', function() {\n    $button.attr('disabled', 'disabled');\n  })\n  .on('acme.ajax.complete', function() {\n    $button.removeAttr('disabled');\n  });<\/code><\/pre>\n<p>Pu\u00f2 essere concatenato perch\u00e9 sta accadendo sull&#8217;oggetto del <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Document\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documento<\/a>, non su un elemento separato.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162324-61e73b9885ab3.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162324-61e73b9885ab3.png\" alt=\"Il perch\u00e9 e il come degli eventi jQuery personalizzati\" ><\/a><\/p>\n<p>A tal fine, quindi \u00e8 molto pi\u00f9 facile da gestire.<\/p>\n<h2>Solo un esempio<\/h2>\n<p>Naturalmente, questo \u00e8 solo un esempio di come gestire eventi jQuery personalizzati.<\/p>\n<p>Ci sono molti altri modi per farlo e puoi fare alcune cose piuttosto complicate con esso; tuttavia, questo dovrebbe fornire informazioni sufficienti per ci\u00f2 di cui hai bisogno su come lavorare con eventi personalizzati a livello fondamentale.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Qual \u00e8, tuttavia, un probabile caso d&#8217;uso in cui gli eventi jQuery personalizzati sono utili nel contesto di WordPress? E come potremmo effettivamente utilizzarli nel nostro lavoro quotidiano?<\/p>\n","protected":false},"author":1,"featured_media":236464,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[896,835,731,720],"tags":[1168],"class_list":["post-231111","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codice","category-guida-per-principianti","category-javascript-6","category-sviluppatore","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231111","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=231111"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231111\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/236464"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=231111"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=231111"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=231111"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}