Jquery plugin disappears
I have created a very simple jQuery .widget
plugin that I am able to use:
<script type="text/javascript">
(function( $ ) {
$.fn.widget = function () {
return this.each(function () {
let $this = $(this);
$this.load($this.attr("data-widget-source"), function (response, status, xhr) {
if (status == "error") {
const msg = "Sorry but there was an error: ";
$("#error").html(msg + xhr.status + " " + xhr.statusText);
}
});
});
};
}(jQuery));
$(document).ready(function () {
$('.widget').widget();
});
But when I try to use it in a code that have been loaded using .load
, it seems to disappear:
$("#mymodal").load("/widget/29/", function(response, status, xhr) {
if (status === "success"){
M.FormSelect.init(document.querySelectorAll('select') , {});
// Redirect submit event
$("#slot_create_form").submit(function(e) {
ajax_submit(e)
.done(function( data, textStatus, jqXHR ) {
console.log("Slot from widget Form data received: ");
console.log(data);
$('.widget').widget(); // Here fails
}).fail(function( jqXHR, textStatus, errorThrown ) {
console.log("Form ajax error received: ");
console.log(errorThrown);
});
});
}
It fails with an error
TypeError: $(...).widget is not a function
jquery django jquery-plugins
add a comment |
I have created a very simple jQuery .widget
plugin that I am able to use:
<script type="text/javascript">
(function( $ ) {
$.fn.widget = function () {
return this.each(function () {
let $this = $(this);
$this.load($this.attr("data-widget-source"), function (response, status, xhr) {
if (status == "error") {
const msg = "Sorry but there was an error: ";
$("#error").html(msg + xhr.status + " " + xhr.statusText);
}
});
});
};
}(jQuery));
$(document).ready(function () {
$('.widget').widget();
});
But when I try to use it in a code that have been loaded using .load
, it seems to disappear:
$("#mymodal").load("/widget/29/", function(response, status, xhr) {
if (status === "success"){
M.FormSelect.init(document.querySelectorAll('select') , {});
// Redirect submit event
$("#slot_create_form").submit(function(e) {
ajax_submit(e)
.done(function( data, textStatus, jqXHR ) {
console.log("Slot from widget Form data received: ");
console.log(data);
$('.widget').widget(); // Here fails
}).fail(function( jqXHR, textStatus, errorThrown ) {
console.log("Form ajax error received: ");
console.log(errorThrown);
});
});
}
It fails with an error
TypeError: $(...).widget is not a function
jquery django jquery-plugins
3
The primary way plugins disappear is if the jQuery library is being included on the page more than once.
– Taplar
Nov 20 '18 at 17:25
@Taplar That was exactly what was happening. Can you put your comment as response so I can select it .
– Nasgar
Nov 21 '18 at 14:10
I can't really answer the question with that, as it's more of a comment. If you want to describe the issue fully and show how you fixed it, you could answer your own question. Otherwise it might be better if the question were closed/deleted, as on it's own it doesn't really demonstrate the issue, and I'm sure there are other existing questions talking about this issue already.
– Taplar
Nov 21 '18 at 14:44
add a comment |
I have created a very simple jQuery .widget
plugin that I am able to use:
<script type="text/javascript">
(function( $ ) {
$.fn.widget = function () {
return this.each(function () {
let $this = $(this);
$this.load($this.attr("data-widget-source"), function (response, status, xhr) {
if (status == "error") {
const msg = "Sorry but there was an error: ";
$("#error").html(msg + xhr.status + " " + xhr.statusText);
}
});
});
};
}(jQuery));
$(document).ready(function () {
$('.widget').widget();
});
But when I try to use it in a code that have been loaded using .load
, it seems to disappear:
$("#mymodal").load("/widget/29/", function(response, status, xhr) {
if (status === "success"){
M.FormSelect.init(document.querySelectorAll('select') , {});
// Redirect submit event
$("#slot_create_form").submit(function(e) {
ajax_submit(e)
.done(function( data, textStatus, jqXHR ) {
console.log("Slot from widget Form data received: ");
console.log(data);
$('.widget').widget(); // Here fails
}).fail(function( jqXHR, textStatus, errorThrown ) {
console.log("Form ajax error received: ");
console.log(errorThrown);
});
});
}
It fails with an error
TypeError: $(...).widget is not a function
jquery django jquery-plugins
I have created a very simple jQuery .widget
plugin that I am able to use:
<script type="text/javascript">
(function( $ ) {
$.fn.widget = function () {
return this.each(function () {
let $this = $(this);
$this.load($this.attr("data-widget-source"), function (response, status, xhr) {
if (status == "error") {
const msg = "Sorry but there was an error: ";
$("#error").html(msg + xhr.status + " " + xhr.statusText);
}
});
});
};
}(jQuery));
$(document).ready(function () {
$('.widget').widget();
});
But when I try to use it in a code that have been loaded using .load
, it seems to disappear:
$("#mymodal").load("/widget/29/", function(response, status, xhr) {
if (status === "success"){
M.FormSelect.init(document.querySelectorAll('select') , {});
// Redirect submit event
$("#slot_create_form").submit(function(e) {
ajax_submit(e)
.done(function( data, textStatus, jqXHR ) {
console.log("Slot from widget Form data received: ");
console.log(data);
$('.widget').widget(); // Here fails
}).fail(function( jqXHR, textStatus, errorThrown ) {
console.log("Form ajax error received: ");
console.log(errorThrown);
});
});
}
It fails with an error
TypeError: $(...).widget is not a function
jquery django jquery-plugins
jquery django jquery-plugins
edited Nov 21 '18 at 15:09
Nasgar
asked Nov 20 '18 at 17:06
NasgarNasgar
13811
13811
3
The primary way plugins disappear is if the jQuery library is being included on the page more than once.
– Taplar
Nov 20 '18 at 17:25
@Taplar That was exactly what was happening. Can you put your comment as response so I can select it .
– Nasgar
Nov 21 '18 at 14:10
I can't really answer the question with that, as it's more of a comment. If you want to describe the issue fully and show how you fixed it, you could answer your own question. Otherwise it might be better if the question were closed/deleted, as on it's own it doesn't really demonstrate the issue, and I'm sure there are other existing questions talking about this issue already.
– Taplar
Nov 21 '18 at 14:44
add a comment |
3
The primary way plugins disappear is if the jQuery library is being included on the page more than once.
– Taplar
Nov 20 '18 at 17:25
@Taplar That was exactly what was happening. Can you put your comment as response so I can select it .
– Nasgar
Nov 21 '18 at 14:10
I can't really answer the question with that, as it's more of a comment. If you want to describe the issue fully and show how you fixed it, you could answer your own question. Otherwise it might be better if the question were closed/deleted, as on it's own it doesn't really demonstrate the issue, and I'm sure there are other existing questions talking about this issue already.
– Taplar
Nov 21 '18 at 14:44
3
3
The primary way plugins disappear is if the jQuery library is being included on the page more than once.
– Taplar
Nov 20 '18 at 17:25
The primary way plugins disappear is if the jQuery library is being included on the page more than once.
– Taplar
Nov 20 '18 at 17:25
@Taplar That was exactly what was happening. Can you put your comment as response so I can select it .
– Nasgar
Nov 21 '18 at 14:10
@Taplar That was exactly what was happening. Can you put your comment as response so I can select it .
– Nasgar
Nov 21 '18 at 14:10
I can't really answer the question with that, as it's more of a comment. If you want to describe the issue fully and show how you fixed it, you could answer your own question. Otherwise it might be better if the question were closed/deleted, as on it's own it doesn't really demonstrate the issue, and I'm sure there are other existing questions talking about this issue already.
– Taplar
Nov 21 '18 at 14:44
I can't really answer the question with that, as it's more of a comment. If you want to describe the issue fully and show how you fixed it, you could answer your own question. Otherwise it might be better if the question were closed/deleted, as on it's own it doesn't really demonstrate the issue, and I'm sure there are other existing questions talking about this issue already.
– Taplar
Nov 21 '18 at 14:44
add a comment |
1 Answer
1
active
oldest
votes
As @Taplar pointed, The code injected by the $("#mymodal").load()
was a full THML page that have its own reference to JQuery. This was reloading JQuery and therefore deleting the plugin.
The issue was corrected using a conditional extends in Django and providing a simpler version of the page without scripts:
{% extends request.no_frame|yesno:"frameless.html,frame.html,frame.html" %}
This request attribute is set by a middleware:
class NoFrameMiddleware:
def __init__(self, get_response):
self.get_response = get_response
# One-time configuration and initialization.
def __call__(self, request):
# Code to be executed for each request before
# the view (and later middleware) are called.
if "frame" in request.GET:
request.no_frame = {'frame': request.GET["frame"].lower() == 'false'}
response = self.get_response(request)
# Code to be executed for each request/response after
# the view is called.
return response
And the load call look like this:
$("#mymodal").load("/widget/29/?frame=False")
The frame.html
is the regular page and the frameless.html
is a page without headers or anything that disturbs the host page
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53398030%2fjquery-plugin-disappears%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
As @Taplar pointed, The code injected by the $("#mymodal").load()
was a full THML page that have its own reference to JQuery. This was reloading JQuery and therefore deleting the plugin.
The issue was corrected using a conditional extends in Django and providing a simpler version of the page without scripts:
{% extends request.no_frame|yesno:"frameless.html,frame.html,frame.html" %}
This request attribute is set by a middleware:
class NoFrameMiddleware:
def __init__(self, get_response):
self.get_response = get_response
# One-time configuration and initialization.
def __call__(self, request):
# Code to be executed for each request before
# the view (and later middleware) are called.
if "frame" in request.GET:
request.no_frame = {'frame': request.GET["frame"].lower() == 'false'}
response = self.get_response(request)
# Code to be executed for each request/response after
# the view is called.
return response
And the load call look like this:
$("#mymodal").load("/widget/29/?frame=False")
The frame.html
is the regular page and the frameless.html
is a page without headers or anything that disturbs the host page
add a comment |
As @Taplar pointed, The code injected by the $("#mymodal").load()
was a full THML page that have its own reference to JQuery. This was reloading JQuery and therefore deleting the plugin.
The issue was corrected using a conditional extends in Django and providing a simpler version of the page without scripts:
{% extends request.no_frame|yesno:"frameless.html,frame.html,frame.html" %}
This request attribute is set by a middleware:
class NoFrameMiddleware:
def __init__(self, get_response):
self.get_response = get_response
# One-time configuration and initialization.
def __call__(self, request):
# Code to be executed for each request before
# the view (and later middleware) are called.
if "frame" in request.GET:
request.no_frame = {'frame': request.GET["frame"].lower() == 'false'}
response = self.get_response(request)
# Code to be executed for each request/response after
# the view is called.
return response
And the load call look like this:
$("#mymodal").load("/widget/29/?frame=False")
The frame.html
is the regular page and the frameless.html
is a page without headers or anything that disturbs the host page
add a comment |
As @Taplar pointed, The code injected by the $("#mymodal").load()
was a full THML page that have its own reference to JQuery. This was reloading JQuery and therefore deleting the plugin.
The issue was corrected using a conditional extends in Django and providing a simpler version of the page without scripts:
{% extends request.no_frame|yesno:"frameless.html,frame.html,frame.html" %}
This request attribute is set by a middleware:
class NoFrameMiddleware:
def __init__(self, get_response):
self.get_response = get_response
# One-time configuration and initialization.
def __call__(self, request):
# Code to be executed for each request before
# the view (and later middleware) are called.
if "frame" in request.GET:
request.no_frame = {'frame': request.GET["frame"].lower() == 'false'}
response = self.get_response(request)
# Code to be executed for each request/response after
# the view is called.
return response
And the load call look like this:
$("#mymodal").load("/widget/29/?frame=False")
The frame.html
is the regular page and the frameless.html
is a page without headers or anything that disturbs the host page
As @Taplar pointed, The code injected by the $("#mymodal").load()
was a full THML page that have its own reference to JQuery. This was reloading JQuery and therefore deleting the plugin.
The issue was corrected using a conditional extends in Django and providing a simpler version of the page without scripts:
{% extends request.no_frame|yesno:"frameless.html,frame.html,frame.html" %}
This request attribute is set by a middleware:
class NoFrameMiddleware:
def __init__(self, get_response):
self.get_response = get_response
# One-time configuration and initialization.
def __call__(self, request):
# Code to be executed for each request before
# the view (and later middleware) are called.
if "frame" in request.GET:
request.no_frame = {'frame': request.GET["frame"].lower() == 'false'}
response = self.get_response(request)
# Code to be executed for each request/response after
# the view is called.
return response
And the load call look like this:
$("#mymodal").load("/widget/29/?frame=False")
The frame.html
is the regular page and the frameless.html
is a page without headers or anything that disturbs the host page
answered Nov 21 '18 at 15:06
NasgarNasgar
13811
13811
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53398030%2fjquery-plugin-disappears%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
3
The primary way plugins disappear is if the jQuery library is being included on the page more than once.
– Taplar
Nov 20 '18 at 17:25
@Taplar That was exactly what was happening. Can you put your comment as response so I can select it .
– Nasgar
Nov 21 '18 at 14:10
I can't really answer the question with that, as it's more of a comment. If you want to describe the issue fully and show how you fixed it, you could answer your own question. Otherwise it might be better if the question were closed/deleted, as on it's own it doesn't really demonstrate the issue, and I'm sure there are other existing questions talking about this issue already.
– Taplar
Nov 21 '18 at 14:44