Antworten auf deine Fragen:
Neues Thema erstellen

Erledigt - Eingebundenes JS wird nicht mehr ausgeführt

dn3d_fanboy

Aktives Mitglied

Guten morgen,

WordPress und Javascript treibt mich mal wieder zum Wahnsinn.
Und zwar habe ich über die functions.php eine eigene JS-Datei eingefügt, in der einige Scripte zusammengeführt sind, um Requests zu minimieren.

Soweit so gut. Bis eben funktionierte auch alles einwandfrei. Jetzt habe ich in der Datei ein weiteres Script eingefügt (Tree-Menu für die Sidebar) und auf einmal wird die Datei nicht mehr ausgeführt (in einer statischen Testversion lief alles problemlos).

Die JS-Datei sieht wie folgt aus:

Javascript:
// TOGGLE SIDEBAR MENU

(function( $ ){
  $.fn.originalToggle = function( fn, fn2 ) {
    var args = arguments,guid = fn.guid || $.guid++,i=0,
    toggler = function( event ) {
      var lastToggle = ( $._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
      $._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
      event.preventDefault();
      return args[ lastToggle ].apply( this, arguments ) || false;
    };
    toggler.guid = guid;
    while ( i < args.length ) {
      args[ i++ ].guid = guid;
    }
    return this.click( toggler );
  };
})( jQuery );
/* Alternative toggle */
(function( $ ){
    $.fn.selfmadeToggle = function(){

        var functions = arguments ;

        return this.click(function(e){
            e.preventDefault();
             var iteration = $(this).data('iteration') || 0;
            functions[iteration].apply(this, arguments);
            iteration = (iteration + 1) % functions.length ;
            $(this).data('iteration', iteration);
        });
    };
})( jQuery );
/* click toggle */
    var tree = {
  
        init: function() {

            var $obj = $(".sidebar .menu li ul");

            if (!$obj.length) return;
            $obj.find("ul").each(function() {
                $(this).css("display", "none");
            });
            $("li:not(:has(ul))").find("a").addClass("leaf");
            $obj.find("a").selfmadeToggle(function() {
                $(this).parent().find("ul:first").slideDown(400);
                tree.classManager($(this));
            },function() {
                $(this).parent().find("ul:first").slideUp(400);
                tree.classManager($(this));
            });
            $obj.find("a").dblclick( function() {
                window.location = $(this).attr("href");
            });
        },
        classManager: function($obj) {
            if (!$obj.hasClass("leaf")) {
                $obj.toggleClass("selected");
            }
        }

    };
$(document).ready(tree.init);

// RESPONSIVE MAIN-MENU

( function( $ ) {
$( document ).ready(function() {
$('#cssmenu').prepend('<div id="indicatorContainer"><div id="pIndicator"><div id="cIndicator"></div></div></div>');
    var activeElement = $('#cssmenu>ul>li:first');

    $('#cssmenu>ul>li').each(function() {
        if ($(this).hasClass('active')) {
            activeElement = $(this);
        }
    });


    var posLeft = activeElement.position().left;
    var elementWidth = activeElement.width();
    posLeft = posLeft + elementWidth/2 -6;
    if (activeElement.hasClass('has-sub')) {
        posLeft -= 6;
    }

    $('#cssmenu #pIndicator').css('left', posLeft);
    var element, leftPos, indicator = $('#cssmenu pIndicator');
  
    $("#cssmenu>ul>li").hover(function() {
        element = $(this);
        var w = element.width();
        if ($(this).hasClass('has-sub'))
        {
            leftPos = element.position().left + w/2 - 12;
        }
        else {
            leftPos = element.position().left + w/2 - 6;
        }

        $('#cssmenu #pIndicator').css('left', leftPos);
    }
    , function() {
        $('#cssmenu #pIndicator').css('left', posLeft);
    });

    $('#cssmenu>ul').prepend('<li id="menu-button"><a>Menü</a></li>');
    $( "#menu-button" ).click(function(){
            if ($(this).parent().hasClass('open')) {
                $(this).parent().removeClass('open');
            }
            else {
                $(this).parent().addClass('open');
            }
        });
});
} )( jQuery );


// SCROLL TO TOP

jQuery(document).ready(function($){
    $(window).scroll(function(){
        if ($(this).scrollTop() > 300) {
            $('#backToTop').fadeIn('slow');
        } else {
            $('#backToTop').fadeOut('slow');
        }
    });
    $('#backToTop').click(function(){
        $("html, body").animate({ scrollTop: 0 }, 500);
        return false;
    });
});


// CLASSIE - FUER SIDEBAR-PUSH BEI RESPONSIVE
/*!
* classie - class helper functions
* from bonzo https://github.com/ded/bonzo
*
* classie.has( elem, 'my-class' ) -> true/false
* classie.add( elem, 'my-new-class' )
* classie.remove( elem, 'my-unwanted-class' )
* classie.toggle( elem, 'my-class' )
*/

/*jshint browser: true, strict: true, undef: true */

( function( window ) {

'use strict';

// class helper functions from bonzo https://github.com/ded/bonzo

function classReg( className ) {
  return new RegExp("(^|\\s+)" + className + "(\\s+|$)");
}

// classList support for class management
// altho to be fair, the api sucks because it won't accept multiple classes at once
var hasClass, addClass, removeClass;

if ( 'classList' in document.documentElement ) {
  hasClass = function( elem, c ) {
    return elem.classList.contains( c );
  };
  addClass = function( elem, c ) {
    elem.classList.add( c );
  };
  removeClass = function( elem, c ) {
    elem.classList.remove( c );
  };
}
else {
  hasClass = function( elem, c ) {
    return classReg( c ).test( elem.className );
  };
  addClass = function( elem, c ) {
    if ( !hasClass( elem, c ) ) {
      elem.className = elem.className + ' ' + c;
    }
  };
  removeClass = function( elem, c ) {
    elem.className = elem.className.replace( classReg( c ), ' ' );
  };
}

function toggleClass( elem, c ) {
  var fn = hasClass( elem, c ) ? removeClass : addClass;
  fn( elem, c );
}

window.classie = {
  // full names
  hasClass: hasClass,
  addClass: addClass,
  removeClass: removeClass,
  toggleClass: toggleClass,
  // short names
  has: hasClass,
  add: addClass,
  remove: removeClass,
  toggle: toggleClass
};

})( window );

Die Website, um die es geht, ist folgende:


Leider wird mir mit Firebug auch kein Fehler angezeigt, so dass ich nicht weiß wonach ich suchen, bzw. was ich ändern soll.

Vielleicht könnt ihr mir helfen.

Besten Dank im Voraus.
 

heikehk

die freundliche Eule

Bist Du Dir sicher, dass alle Klammern geschlossen sind und dass die Dinge, die Du im einen Skript eingebunden hast die aus dem anderen nicht behindern?
 

pascal.k

Basinga

Hi, ich bekomme in der Chrome Console diesen Fehler: Uncaught TypeError: $ is not a function
Das bedeutet meistens, dass dein JS-Code, der in jQuery geschrieben wurde ausgeführt wurde, bevor die eigentliche jQuery Bibliothek in Dokument geladen wurde. Setze also deinen Code mal ans Ende der Seite.
 

dn3d_fanboy

Aktives Mitglied

Bist Du Dir sicher, dass alle Klammern geschlossen sind und dass die Dinge, die Du im einen Skript eingebunden hast die aus dem anderen nicht behindern?

Wie finde ich das heraus? Die Entwicklerkonsole zeigt mir leider nichts an.
Ich habe den Inhalt der Scriptdatei von WordPress jetzt mal komplett in meine statische kopiert und dort funktioniert alles einwandfrei.

Hi, ich bekomme in der Chrome Console diesen Fehler: Uncaught TypeError: $ is not a function
Das bedeutet meistens, dass dein JS-Code, der in jQuery geschrieben wurde ausgeführt wurde, bevor die eigentliche jQuery Bibliothek in Dokument geladen wurde. Setze also deinen Code mal ans Ende der Seite.

jQuery wird definitiv vor der JS-Datei eingefügt. So steht es zumindest im Quelltext. Bevor ich den JS-Code des Tree-Menüs eingefügt habe, funktionierte ja alles einwandfrei.


[EDIT]
OK, wenn ich den JS-Code des Tree-Menüs ans Ende der JS-Datei setze, funktioniert alles bis auf eben dieses Tree-Menü.
Der Fehler, wie pascal.k es schon schrieb, ist der gleiche geblieben. Allerdings wird mir der Fehler NICHT in der statischen Version angezeigt.
Wie kann ich sehen, ob das Script mit irgendeinem anderen in Konflikt gerät?
 
Zuletzt bearbeitet:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.613
Beiträge
1.538.345
Mitglieder
67.524
Neuestes Mitglied
BSKGA
Oben