Nur ein Gedanke, aber haben Sie darüber nachgedacht, den Wert in einer Javascript-Variable zu speichern? Wenn Sie es nur in Javascript verwenden, warum sollten Sie es in ein verstecktes Feld oder ein Element stecken?
Deklarieren Sie einfach Variable im globalen Bereich, wenn Sie Namespacing/Module nicht verwenden, aber wenn Sie sind, können Sie sie im Bereich des Moduls speichern, das sie verwendet.
Nur Überlegungen mit diesem Ansatz ist die Variable wird auf Seite aktualisieren zurückgesetzt, aber wenn Sie den Wert auf dem Server verwenden, nur in Skript, dann sollte das in Ordnung sein.
Im Allgemeinen würde ich nur eine versteckte Eingabe verwenden, wenn der Server es lesen könnte.
EDIT
In reposone zu den Kommentaren, wenn Sie Ihr Javascript sinnvoll verwenden, die die Verwendung von namespaceing enthält dann dieser Ansatz funktioniert mit einer gewissen Eleganz über Markup mit „variable holders“ unübersichtlich
Ein sehr schnelles Gerüst für die Namensräume .....
in einer Datei namens MyProject.Global.js
//This function is truly global
function namespace(namespaceString) {
var parts = namespaceString.split('.'),
parent = window,
currentPart = '';
for (var i = 0, length = parts.length; i < length; i++) {
currentPart = parts[i];
parent[currentPart] = parent[currentPart] || {};
parent = parent[currentPart];
}
return parent;
}
in einer Datei namens MyProject.MyPage.Ui.js
namespace('MyProject.MyPage');
MyProject.MyPage.Ui = function() {
var self = this;
self.settings = {};
function init(options) {
$.extend(self.settings, options);
//any init code goes here, eg bind elements
setValue();
};
};
//this is considered a "private" function
function setValue(){
$('#categories > li > a').click(function (e) {
e.preventDefault();
self.settings.myValue = $(this).attr('data-value');
refreshGrid('Reference');
});
}
function getValue(){
return self.settings.myValue;
}
//any function within this return are considered "public"
return {
init: init,
getValue: getValue
};
};
schließlich auf Ihrer Seite ...
$(document).ready(function() {
var ui = new MyProject.MyPage.Ui();
ui.init();
}
dann an jedem Punkt, den Sie halten Ihren Wert bekommen kann mit ...
MyProject.MyPage.getValue()
'.attr()' ist immer noch korrekt, wenn Sie tatsächlich Eigenschaften anstelle von Eigenschaften erhalten/setzen. Es ist auch der empfohlene Weg, ein html5 'data-' Attribut zu erhalten, wenn Sie dies tun möchten, ohne die automatische Typkonvertierung in die '.data()' Methode eingebaut zu haben. – nnnnnn
Danke für die Erklärung, hab es wirklich falsch gemacht :-) – SamiSalami