私は jQuery Mobile を使用しており、1 つの HTML ページにいくつかのページがあります。これらのページを開くときに、パラメーターを渡して、パラメーターが URL で永続化されるようにしたいと考えています。
例えば
<a href="#map?x=4&y=2"
それが開き、beforeshow イベントでパラメータ X と Y にアクセスできました。
これは可能ですか?ハッシュバングでパラメーターをエンコードするために提案する代替手段は何ですか?
私は jQuery Mobile を使用しており、1 つの HTML ページにいくつかのページがあります。これらのページを開くときに、パラメーターを渡して、パラメーターが URL で永続化されるようにしたいと考えています。
例えば
<a href="#map?x=4&y=2"
それが開き、beforeshow イベントでパラメータ X と Y にアクセスできました。
これは可能ですか?ハッシュバングでパラメーターをエンコードするために提案する代替手段は何ですか?
現在のサポートにはバグがあるため、ハッシュ「パラメーター」を使用しないことをお勧めします。
すべてのリンクのクリックを傍受し、特定のデータ要素、たとえば data-params を探します。
$('a').live('click',
function(e) {
var data = $(e.target).jqmData()
globalParams = data.params !== null ? data.params : null
}
)
そしてあなたのHTMLであなたは行くことができます
<a href="#map" data-params="x=4&y=2">....</a>
この場合、paramsと呼ばれるグローバル変数を作成しています。これは、すべてのコードから統一された方法でアクセスできるはずです。
ただし、これらのパラメーターを自分で解析する必要がありますが、それは難しくありません。次のようなものを使用できます。
function getCurrentParams() {
if (!params) {
return null
}
var res = {}
$(params.split('&')).each(
function(i, e) {
var pair = e.split('=')
if (pair.length !== 2) {
return
}
res[pair[0]] = pair[1]
}
)
return res
}
はい、あなたはあなたが示したようなリンクを持つことができます:
<a href="#map?x=4&y=2"> Click here </a>
次に、ショーの前に、次のコードでこのパラメーターを読み取ることができます。
var params = QueryStringToHash(location.hash.substr(1));
//Now you can use params.x, params.y, etc
(ここQueryStringToHash
から得た)の定義は次のとおりです。
var QueryStringToHash = function QueryStringToHash (query) {
var query_string = {};
var vars = query.split("&");
for (var i=0;i<vars.length;i++) {
var pair = vars[i].split("=");
pair[0] = decodeURIComponent(pair[0]);
pair[1] = decodeURIComponent(pair[1]);
// If first entry with this name
if (typeof query_string[pair[0]] === "undefined") {
query_string[pair[0]] = pair[1];
// If second entry with this name
} else if (typeof query_string[pair[0]] === "string") {
var arr = [ query_string[pair[0]], pair[1] ];
query_string[pair[0]] = arr;
// If third or later entry with this name
} else {
query_string[pair[0]].push(pair[1]);
}
}
return query_string;
};
お役に立てれば。乾杯
jQuery モバイル FAQ を確認しましたか? -> http://jquerymobile.com/test/docs/faq/pass-query-params-to-page.php
私は現在使用しています: https://github.com/azicchetti/jquerymobile-router