ちょっと考えましたが、値をjavascript変数に格納することを検討しましたか?あなたがjavascriptでそれを使用しているのであれば、それを隠しフィールドや要素に置くのはどうしてですか?
名前空間/モジュールを使用していない場合はグローバルスコープで変数を宣言しますが、それを使用するモジュールのスコープに格納することができます。
このアプローチでは、ページの更新時に変数がリセットされるだけですが、サーバー上の値を使用してスクリプトを実行していれば、その変数は正常になるはずです。
一般に、サーバーがそれを読み取ることができる必要がある場合は、隠し入力のみを使用します。 reposoneで
EDIT
コメントにあなたは賢明に自分のJavaScriptを使用している場合は、namespaceingの使用を含む、このアプローチは、「変数保有者」を使用してマークアップを散らかすの上に優雅の一定量で動作します
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;
}
と呼ばれるファイルに.....
の名前空間をのために非常に迅速に足場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
};
};
と呼ばれるファイル内
...
$(document).ready(function() {
var ui = new MyProject.MyPage.Ui();
ui.init();
}
その後、任意の時点で、あなたは使用して値を手に入れることができます...
MyProject.MyPage.getValue()
実際にプロパティではなく属性を取得/設定している場合、 '.attr()'は正しいです。また、 '.data()'メソッドに自動型変換を組み込まずに、html5の 'data-'属性を取得する方法も提案されています。 – nnnnnn
説明をありがとう、実際にそれが間違っていた:-) – SamiSalami