2017-08-01 6 views
0

Dans ces 2 exemples, le premier fonctionne.jQuery className ne fonctionne pas

Dans le deuxième exemple que je lierdragover et DragLeave événements à img au lieu de div mais je veux changer className pour div. Les événements sont correctement détectés et aucune erreur n'est générée, mais div ne change pas sa classe.

Où est le problème?

//This work 
 

 
$(document).ready(function() { 
 
    $("#framedrag").bind("dragover dragleave", function(e) { 
 
     e.stopPropagation(); 
 
     e.preventDefault(); 
 
     e.target.className = (e.type == "dragover" ? "hover" : ""); 
 
     return false; 
 
    }); 
 
}); 
 
    
 

 
//This don't work 
 

 
$(document).ready(function() { 
 
    $("#dragdrop").bind("dragover dragleave", function(e) { 
 
     e.stopPropagation(); 
 
     e.preventDefault(); 
 
     $("#framedrag").className = (e.type == "dragover" ? "hover" : ""); 
 
     return false; 
 
    }); 
 
});
#framedrag 
 
{ 
 
    \t color: #555; 
 
    \t border: 2px dashed #555; 
 
    \t border-radius: 7px; 
 
    \t cursor: default; 
 
} 
 

 
#framedrag.hover 
 
{ 
 
    \t color: #3fc600; 
 
    \t border-color: #3fc600; 
 
    \t border-style: solid; 
 
}
<script  src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="preview-pane"> 
 
    <div id="framedrag"> 
 
     <div class="preview-container"> 
 
      <img id="dragdrop" src="images/upload-picture.png" class="jcrop-preview" /> 
 
     </div> 
 
    </div> 
 
</div>

+0

double possible de [jQuery dragenter ou dragover pour inclure les enfants] (https://stackoverflow.com/questions/26756176/jquery-dragenter-or- dragover-to-include-children) – Difster

+0

@Difster J'ai vu cette réponse mais n'aide pas le problème n'est pas la même – user2272143

Répondre

0

Essayez cette $("#framedrag").attr("class", e.type == "dragover" ? "hover" : "");

+0

Merci pour votre réponse, j'ai essayé les deux mais ne fonctionne pas – user2272143

+0

@ user2272143 oh, bien sûr, j'étais inattentif. Pourquoi n'utilisez-vous pas simple addClass de jQuery? – Andrew

+0

@ user2272143 J'ai édité pour 'attr' aussi vous pouvez utiliser juste' $ ("# framedrag"). RemoveClass(). AddClass (e.type == "dragover"? "Hover": ""); ' – Andrew