2012-03-30 6 views
2

Hier ist mein tag:Wie verwende ich JQuery, um eine Variable in die Parameter einer JavaScript-Funktion zu injizieren?

<div class="ContentBlock"> 
    <a href="javascript:setActiveCookie('12345',7)"><img src="/images/blah.gif"></a> 
</div> 

Anstatt Hartcodierung diesen Wert von ‚12345‘, würde Ich mag diese von einer Javascript-Funktion dynamisch bearbeiten und einen variablen Parameter injizieren dort statt.

Irgendwelche Ideen, wie man das macht?

Hier ist etwas JQuery, wo ich das tun möchte. Im Grunde baue ich 10 dynamische Zeilen, jeder hat das obige Tag und jeder muss seine eigene "ID" als Parameter in diesem Aufruf von 'setActiveCookie' verwenden. (Die ID wird verwendet, um einen Cookie-Wert zu setzen, FWIW). Unten habe ich einen CLONE und habe bereits JSON stringify'd-Werte in den dynamisch generierten HTML-Code getauscht. Ich muss diese ID nur in den Funktionsaufruf injizieren. Jede Hilfe wird geschätzt !!

$.each(val, function(key2, value) { 
    ///inject key2 and value into already-cloned JS object here. This already is working. 
    if (key2 == 'storeId') { 
     var ID = (JSON.stringify(value)); 
     ///Shove this ID into the <a> tag here??? 
    } 
}); 
+0

Was landete ich doing war ... store.find ('a #' + schlüssel2) .attr ('id', 'ID _' + wert); –

Antwort

0

Verwenden Sie die HTML5 data- attrbute:

Set Werte:

$('#X').data('value1',12345) 
$('#X').data('value2',7) 

HTML

<a id="X" href="javascript:setActiveCookie(this)"><img src="/images/blah.gif"></a> 

Get Werte:

function setActiveCookie(element) { 
     var value1 = $(element).data('value1') 
     var value2 = $(element).data('value2') 
} 
0

Ich bin kein JavaScript-Typ, aber ich glaube, Sie sollten in der Lage sein, eine Karte von Zeile # zu dieser ID zu definieren, wie id[row] = 12345. Und dann in Ihrer JQuery-Funktion, einfach den Wert in dieser Karte neu zuweisen: id[row] = ID. Im Anker-Tag, haben nur <a href="javascript:setActiveCookie(id[row], row)>

0

Statt hart Codierung des href Attribut verwenden javascript:void(0); und dann das Click-Ereignis in jQuery gesetzt:

<a id="Link1" href="javascript:void(0);">Link Text or Image</a> 

javascript:

$.each(val,function(key2,value){ 

       ///inject key2 and value into already-cloned JS object here. This already is working. 
       if (key2=='storeId'){ 
        $("#Link1").click(function() { 
         setActiveCookie(value, 7); 
        }); 
       } 

      }); 
+0

das funktioniert aus irgendeinem Grund nicht. Ich mag den Ansatz jedoch. –

Verwandte Themen