2016-07-26 61 views
0

我遵循了一个关于使用javascript制作文件上传器的教程,并且我将它运用了,所以我认为它会更好地作为jQuery插件,以便我可以在我的页面的不同元素上使用它。于是我开始将代码移植到我的插件中,并遇到了一个问题。为什么ondragover不能在jQuery插件中工作?

通常情况下,您可以使用jQuery和JavaScript,但出于某种原因,ondragover不能在我的插件中工作。

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

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

我知道我可以使用

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

代替,而工作,是jQuery的相当,但我想知道为什么JavaScript是不工作?

+0

为什么要使用'base.ondragover'而不是'base.on(“dragover”)'? – gcampbell

+0

自发布以来,我一直在将其更改为与其下面的代码相同的jQuery。我只是感到困惑,为什么JavaScript代码无法正常工作。如果我在我的插件外使用它,但它在我的插件中不起作用。为了进一步学习,我想了解为什么javascript在我的插件中不起作用。我可能会使用jQuery替代品,但我只是想知道为什么,通常可以混合使用jQuery和JavaScript代码。 –

+0

最好使用'foo.on(“bar”)'(jQuery)或'foo.addEventListener(“bar”)'(原生JS)而不是'foo.onbar',因为您可以添加和删除多个侦听器。 – gcampbell

回答

1

base=$(this)是一个jQuery对象和jQuery对象没有.dragover属性,但DOM对象了。

+0

谢谢你,这是完美的。所以如果我想使用JavaScript,我只需要从基地获取ID,然后它就可以工作。谢谢 –

0

我认为你应该使用

base.dragover(function(){}) 
相关问题