2016-07-26 7 views
0

Ich folgte einem Tutorial über das Erstellen eines Datei-Uploaders mit Javascript, und ich habe es zu arbeiten und so dachte ich, es wäre besser als ein jQuery-Plugin, so dass ich es auf verschiedenen Elementen auf meiner Seite verwenden kann. Also habe ich angefangen, den Code auf mein Plugin zu portieren, und habe ein Problem.Warum funktioniert Ondragover nicht in einem jQuery-Plugin?

Normalerweise können Sie jQuery und Javascript verwenden, aber aus irgendeinem Grund funktioniert Ondragover nicht in meinem Plugin.

;(function($) { 
    "use strict"; 
    $.fn.asiLoader = function() { 
     var base=$(this); 

     base.ondragover=function(){ 
       alert('test'); 
       return false; 
     } 
     return base; 
    } 
})(jQuery); 

Ich weiß, ich

base.on("dragover", function(e) { 
    alert('test'); 
    e.preventDefault(); 
    e.stopPropagation(); 
}); 

stattdessen verwenden können, und das funktioniert und ist das jQuery gleichwertig, aber ich möchte wissen, warum die Javascript nicht funktioniert?

+0

Warum möchten Sie 'base.ondragover' anstelle von' base.on ("dragover") '' verwenden? – gcampbell

+0

Gut, seit dem Posten habe ich es in das jQuery-Äquivalent geändert, welches der Code darunter ist. Ich war nur verwirrt, warum der JavaScript-Code nicht funktionierte. Es funktioniert, wenn ich es mit einer ID außerhalb meines Plugins verwende, aber nicht in meinem Plugin funktioniert. Um weiter zu lernen, wollte ich erfahren, warum das Javascript in meinem Plugin nicht funktioniert. Ich werde wahrscheinlich die jQuery-Alternative verwenden, aber ich wollte nur wissen, warum, wie Sie normalerweise jQuery und Javascript-Code mischen können. –

+0

Es ist besser, 'foo.on (" bar ")' (jQuery) oder 'foo.addEventListener (" bar ")' (native JS) als 'foo.onbar' zu verwenden, da Sie mehrere Listener hinzufügen und entfernen können. – gcampbell

Antwort

1

base=$(this) ist ein jQuery-Objekt verwenden soll, und jQuery-Objekt verfügt nicht über .dragover Eigenschaft, sondern DOM-Objekt hat.

+0

Vielen Dank das macht Sinn. Also, wenn ich das Javascript verwenden wollte, müsste ich nur die ID von der Basis holen und dann würde es wahrscheinlich funktionieren. Vielen Dank –

0

ich glaube, Sie

base.dragover(function(){})