Estoy creando una aplicación web de Django y quiero usar una extensión JS que crea un enlace de programación semanal. Coloqué esta extensión en el directorio estático de mi proyecto e importé jQuery y la extensión en mi base.html así:
<!-- jquery --> <script src="https://code.jquery.com/jquery-3.3.1.min.js" defer></script> <!-- jQuery schedule display (includes css and js) --> <link rel="stylesheet" href="{% static 'Dynamic-Weekly-Scheduler-jQuery-Schedule/dist/jquery.schedule.css' %}"> <script src="{% static 'Dynamic-Weekly-Scheduler-jQuery-Schedule/dist/jquery.schedule.js' %}"></script>
Sin embargo, cuando intento pasar datos a este complemento así:
<script type="text/javascript"> console.log({{schedule_data}}) $("schedule").jqs({{schedule_data}}) </script>
Me sale un error en jquery.schedule.js:
Uncaught ReferenceError: jQuery is not defined
refiriéndose al final de este archivo que es:
$.fn[pluginName] = function (options) { var ret = false; var args = Array.prototype.slice.call(arguments); var loop = this.each(function () { if (!$.data(this, 'plugin_' + pluginName)) { $.data(this, 'plugin_' + pluginName, new Plugin(this, options)); } else if ($.isFunction(Plugin.prototype[options])) { ret = $.data(this, 'plugin_' + pluginName)[options](args); } }); if (ret) { return ret; } return loop; }; })(jQuery, window, document);
¿Qué estoy haciendo mal? ¿No debería estar usando jQuery CDN? Tenga en cuenta que jQuery no está definido en ninguna otra parte del documento jquery.schedule.js. Gracias
Es posible que deba tener cuidado con el uso de defer
cuando cargue el CDN. defer
le dice al navegador que espere hasta que todo lo demás se haya cargado, por lo que en su código, la etiqueta <script>
que tiene en la parte inferior comenzará a ejecutarse primero. Debe eliminar la etiqueta defer
defer
cargue su <script>
. Eso aseguraría que su biblioteca jQuery esté completamente cargada antes de ejecutar su script.