jQuery UI-Draggable n'est pas une fonction?
j'ai essayé d'utiliser l'effet draggable sur certaines divs sur une page, mais chaque fois que je charge la page, je reçois le message d'erreur:
Error: $(".draggable").draggable is not a function
j'ai eu un coup d'oeil autour il semblait que d'autres personnes avaient ce problème car ils n'avaient pas inclus le fichier javascript jQuery UI, mais je l'ai certainement.
ce qui suit est dans l'étiquette de tête de ma page:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js"></script>
Quelqu'un peut-il Suggérer une solution?
tout conseil apprécié.
Merci.
édition rapide, j'ai également les outils jquery js inclus dans le chef de la page, si je supprime cela, il fonctionne bien. Quelqu'un a réussi à obtenir ces deux travailler ensemble?
16 réponses
4 ans après que la question a été affichée, mais peut-être qu'il aidera d'autres qui se heurtent à ce problème. La réponse a été postée ailleurs sur StackExchange aussi, mais j'ai perdu le lien et il est difficile de trouver.
réponse: dans jQueryTOOLS, le "core" de jQuery est également intégré si vous utilisez le téléchargement par défaut.
lorsque vous chargez des outils jQuery et jQuery, jQuery core est défini deux fois et va 'désactiver' tous les plugins. "Draggable" (de jQuery-UI) est un tel plug-in.
la solution est d'utiliser des outils jQuery sans les fichiers 'core' de jQuery et tout fonctionnera très bien.
ce problème se produira également si vous ne chargez pas jqueryui ainsi que jquery
par exemple:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js" type="text/javascript"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js" type="text/javascript"></script>
-
Install jquery-ui-dist
utiliser mnp
npm install --save jquery-ui-dist
ou fils 151990920"
yarn add jquery-ui-dist
-
Importer à l'intérieur de votre code d'application
import 'jquery-ui-dist/jquery-ui';
ou
require('jquery-ui-dist/jquery-ui');
assurez - vous que votre code suit cet ordre -
<script src="jquery.min.js"></script>
<script src="jquery-ui/jquery-ui.js"></script>
assurez-vous que vous avez l'objet jQuery et pas l'élément lui-même. Si vous sélectionnez par classe, vous risquez de ne pas obtenir ce que vous attendez.
ouvrez une console et regardez ce que votre code de sélection renvoie. Dans Firebug, vous devriez voir quelque chose comme:
jQuery( div.draggable )
vous devrez peut-être aller dans un tableau et saisir le premier élément: $('.draggable').first()
puis appeler draggable() sur cet objet jQuery et c'est terminé.
vous pouvez importer ces fichiers js. Il a bien fonctionné pour moi.
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js" ></script>
Hey là, cela fonctionne pour moi (Je ne pouvais pas obtenir ce travail avec le API Google liens que vous utilisiez):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Beef Burrito</title>
<script src="http://code.jquery.com/jquery-1.4.2.min.js" type="text/javascript"></script>
<script src="jquery-ui-1.8.1.custom.min.js" type="text/javascript"></script>
</head>
<body>
<div class="draggable" style="border: 1px solid black; width: 50px; height: 50px; position: absolute; top: 0px; left: 0px;">asdasd</div>
<script type="text/javascript">
$(".draggable").draggable();
</script>
</body>
</html>
ce code ne fonctionnera pas (vous pouvez vérifier dans firebug jQuery.ui n'est pas défini):
<script src="http://code.jquery.com/jquery-1.4.2.min.js" type="text/javascript"></script>
<script src="jquery-ui-1.8.1.custom.min.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js" type="text/javascript"></script>
essayez d'utiliser le code suivant:
<script src="http://code.jquery.com/jquery-1.4.2.min.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js" type="text/javascript"></script>
<script src="jquery-ui-1.8.1.custom.min.js" type="text/javascript"></script>
cela peut être utile pour quelqu'un:
dans mon cas, j'ai pu supprimer cette erreur en chargeant d'abord les fichiers js dont dépend draggable. Ils étaient de l'interface utilisateur.souris.js, de l'interface utilisateur.de base et l'interface utilisateur.widget j'.e L'INTERFACE utilisateur de Base Usine De Widget L'Interaction De La Souris
assurez-vous que la balise de script pour le chargement des dépendances se trouve au-dessus de la balise de chargement js.
jQuery Tools et jQuery UI entrent en conflit parce qu'ils déclarent tous deux jQuery.tabs
et le conflit empêche la seconde (dans ce cas jQuery UI) d'être chargée. C'est la raison pour laquelle vous obtenez une erreur draggable is not a function
.
une solution à ce problème est de créer une version personnalisée de jQuery Tools (à partir de ici ) sans la fonctionnalité tabs.
Informations sur le conflit trouvé ici: Can JQuery UI et jQuery tools travaillent ensemble?
au lieu de
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js"></script>
Utiliser
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js" type="text/javascript"></script>
ce problème peut également être causé si vous incluez la bibliothèque jQuery normale deux fois. J'ai eu la phrase suivante deux fois, dans mon corps et ma tête.
Il n'a jamais causé de problèmes jusqu'à ce que j'ai essayé d'utiliser jquery UI.
la cause de cette erreur est généralement parce que vous utilisez probablement un framework bootstrap et avez déjà inclus un fichier jquery ailleurs peut-être à la tête ou juste au-dessus de l'étiquette de fermeture du corps, dans ce cas tout ce que vous devez faire est d'inclure le fichier jquery ui où vous avez le fichier jquery ou sur les deux endroits et vous serez très bien...
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js" type="text/javascript"></script>
incluez simplement le script d'interface de jQuery ci-dessus partout où vous importez le fichier jquery avec d'autres bootstrap dépendances.
si vous développez une application ionique assurez-vous d'inclure jquery et jquery-ui avant ionique.bundle.js!
un tel gaspillage de temps pour quelque chose d'aussi trivial :(
j'ai passé en revue à la fois votre question et une autre duplicate .
En fin de compte, la réponse suivante m'a aidé à clarifier certaines choses:
non interceptée-typeerror-déplaçable-est-pas-une-fonction
pour se débarrasser de:
$(".draggable").draggable n'est plus une fonction
j'ai dû mettez les liens vers les bibliothèques Javascript au-dessus de l'étiquette de script Je m'attendais à travailler.
mon code:
<link rel="stylesheet" href="https://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.min.css"/>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js" />
<script type="text/javascript" src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js" />
<script>
$(function(){
$("#container-speed").draggable();
});
</script>
<div class="content">
<div class="container-fluid">
<div class="row">
<div class="rowbackground"style="width: 600px; height: 400px; margin: 0 auto">
<div id="container-speed" style="width: 300px; height: 200px; float: left"></div>
<div id="container-rpm" style="width: 300px; height: 200px; float: left"></div>
</div>
</div>
</div>
</div>
j'ai eu le même problème pour une autre raison et mon oeil a eu besoin d'une heure pour le découvrir. J'ai copié-collé les étiquettes de script qui chargent jquery:
<script src="**https**://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="**http**://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
mon site web utilisait https lorsqu'on y accédait à partir d'un navigateur mobile et refusait de charger jquery-ui sans https.