wake-up-neo.com

Simple jQuery Click Not Working, obwohl das Konsolenprotokoll die Funktion erkennt

Laden eines jQuery-Dialogs in ein Plugin.

  1. Enqueue bei Admin Enqueue Scripts

    function enqueue_settings_scripts_styles($page) {
        wp_enqueue_script (  'my-plugin', 'path/to/the.js', array( 'jquery-ui-dialog' ));
    }
    add_action('admin_enqueue_scripts', enqueue_settings_scripts_styles');
    
  2. Das HTML

    <a style="cursor:pointer" class="cool-button">Click Me</a>
    
  3. Skript (the.js)

    (function($) {
      console.log( "ready!" ); // this happens
      var detailsButton = $('a.cool-button');
      console.log(detailsButton.click);
      // this prints out to console:
      // function (a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}
    
    
      detailsButton.click(function(e) {
        alert('i happened'); // never happens
        e.preventDefault();
      });
    })(jQuery);
    

Ich habe über eine Stunde damit verbracht, Fehler zu beheben. Was vermisse ich?

1
MikeiLL

Wenn Sie ein Skript in die Warteschlange stellen, sollten Sie die Abhängigkeiten Ihres Skripts angeben. In Ihrem Fall ist es jQuery.

Stellen Sie Ihr Skript folgendermaßen in die Warteschlange:

wp_enqueue_script (  'my-plugin', 'path/to/the.js', array( 'jquery' ) );

Sie können auch sicherstellen, dass Ihr Skript IS in die Fußzeile geladen wird, indem Sie das letzte Argument auf true setzen:

wp_enqueue_script (  'my-plugin', 'path/to/the.js', array( 'jquery' ), null, true);

Wobei null die Versionsnummer ist und true angibt, dass das Skript in die Fußzeile geladen werden muss.

2
Jack Johansson