2016-05-05 3 views
0

Ich muss Skript entfernen und danach Funktion als $('body').click(function (e) { hat nicht zu arbeiten, weil es in diesem Skript entfernt befindet.Wie aktualisiert man Skripte in dom nach dem Entfernen von Skripten?

i tun:

$('script[src^="app/common/kendoGridExtendedHelper.js?1"]').remove();

buuuut nach $('body').click(function (e) { arbeitet weiter und ich kann dieses Skript in Browser von Entwickler-Tools sehen.

Hilfe bitte

+0

Sobald das Skript geladen, es ist geladen. Sie können es nicht * entladen *. Sie können nur Ereignisse entfernen (keine Notwendigkeit, das Tag zu entfernen) wie '$ ('body'). Off ('click')'. –

+0

@ Karl-AndréGagnon, bitte zeigen Sie mir, was kann ich für innere Funktion tun funktioniert nicht – axon

Antwort

0

Es funktioniert nicht, wie Sie gehen davon aus. Wenn das Skript ausgeführt wird und der Ereignishandler click an 'body' angehängt ist, befindet es sich bereits im DOM und nichts, was Sie mit dem Skript-Tag tun, wird das ändern.

Sie werden zu haben den Handler in einem eigenen Skript entfernen, einfach tun:

$('body').off('click'); 

Dies kann unordentlich sein, und andere Funktionalitäten brechen, wie jeder Klick-Handler wird entfernt werden von 'body'. Der ideale Ansatz für diese Fälle ist Namespaces verwenden. Wenn Sie die Kontrolle in diesem Skript haben Sie zu entfernen versuchten, befestigen Sie den Click-Handler mit einem Namespace:

$('body').on('click.somenamespace', function() { ... }); 

Und dann in Ihrem Skript lösen sie den gleichen Namespace:

$('body').off('click.somenamespace'); 
+0

Nein, in meinem Fall, ich muss Skript entladen nämlich – axon

+0

Sie können das Skript nicht entladen. Wenn Sie die HTML-Seite kontrollieren, entfernen Sie einfach das Skript-Tag !! Wenn Sie es nicht tun, ist es eine Art Angriff/Hack auf der Seite, was Sie versuchen zu tun, haben Sie vielleicht die besten Gründe, aber technisch ist es. –

Verwandte Themen