2012-04-13 7 views
0

So habe ich die folgende JQuery Aufruf einer JavaScript-MethodeÄndern Javascript-Methode JQuery

$j("a.Pinterest").attr("href", "javascript:void(addScript());"); 

Und das ist die Javascript-Methode

function addScript() { 
    var e = document.createElement('script'); 
    e.setAttribute('type', 'text/javascript'); 
    e.setAttribute('charset', 'UTF-8'); 
    e.setAttribute('src', 'http://assets.pinterest.com/js/pinmarklet.js?r=' + Math.random() * 99999999); 
    return document.body.appendChild(e); 
} 

ich mich gefragt, ob es einen Weg, um alles zu haben in Jquery?

+1

Werfen Sie einen Blick in die Dokumentation jQuery: http://api.jquery.com/jQuery.getScript/ –

+0

hmm, jetzt einige Code schreiben, halten pls auf abit –

+0

Dubletten: http://stackoverflow.com/questions/4881164/loading-a-external-script-nach-page-load-with-jquery, http://stackoverflow.com/questions/9441142/load-external-js-file-with-jquery, http://stackoverflow.com/questions/5624366/dynamically-load-external-js-and-write-response-to-a-div, http://stackoverflow.com/questions/4361033/jquery-load-script-on-click –

Antwort

1
$j("a.Pinterest").attr("href", "javascript:void(addScript());"); 

Bitte tun Sie dies nicht. Ich schlage vor, einen Click-Handler zu verwenden.

$j("a.Pinterest").click(addScript); 

Und dann in Ihrem addScript Sie getScript verwenden können, um das Skript zu laden.

function addScript(e) { 
    e.preventDefault(); 
    $j.getScript('http://assets.pinterest.com/js/pinmarklet.js'); 
} 
+1

Endlich. +1 für das Nuking dieses Inline-Mülls. – Sparky

+0

Dies funktioniert gut, aber wie kann ich den Link-Cursor hinzufügen, wenn Sie den Mauszeiger über den ausgewählten Link bewegen – StevieB

+0

@StevieB: Sie müssen es als 'href' Attribut etwas geben. Versuchen Sie '$ j (" a.Pinterest ") .attr (" href "," # ");', oder fügen Sie 'href =" # "' dem Link im HTML hinzu. –

1

http://api.jquery.com/jQuery.getScript/

$.getScript("http://assets.pinterest.com/js/pinmarklet.js") 
    .done(function(script, textStatus) { 
    console.log(textStatus); 
}) 

edit: ich nicht ausprobiert habe, nahm ich nur Ihre Adresse und warf ihn in den getScript Demo.

0
function addScript() { 
     return $('<script/>',{ 
          'type':'text/javascript', 
          'charset':'UTF-8', 
          'src':'http://assets.pinterest.com/js/pinmarklet.js?r=' + Math.random() * 99999999 
       }).appendTo("body")[0]; 
} 
0

Sie können Elemente in jQuery mit dem $ Selektor erstellen.

$('<script></script>') 

jQuery ist auch verkettbar, so können Sie dies haben kann:

$('<script></script>') 
    .attr({ 
     'type' : 'text/javascript', 
     'charset', 'UTF-8', 
     'src' : 'http://assets.pinterest.com/js/pinmarklet.js?r=' + Math.random() * 99999999) 
    }) 
    .appendTo(whatever) 

Wenn Sie bedingte Skript Laden tun, könnten Sie einen Blick auf die yepnope Bibliothek nehmen wollen.

Ich würde fragen, warum Sie dynamisch ein Skript auf die Seite bei einem Klick hinzugefügt werden. Scheint so, als würde das Skript bereit sein und darauf warten, dass der Benutzer darauf klickt. Wenn Sie sich Sorgen um die Ladezeit machen, aber das Skript-Tag am Ende der Seite, um das Laden zu verzögern.

+0

Ich wollte nur das href-Attribut aus dem Markup verstecken, da das Markup in den Inhaltseditor für ein cms gehen muss und ich wollte nicht, dass Benutzer damit herumspielen – StevieB