私は jQuery を初めて使用し、ここにいるほとんどのフロントエンドの専門家にとっておそらく簡単に見つけられる問題に遭遇しました。
次のスクリプトを作成しました
$(document).ready(function() {
$("#facet_properties input[type='checkbox']").each(function() {
$(this).click(function() {
var queryString = getQueryString();
$('body').load(window.location.pathname.concat(queryString));
})
});
});
function getQueryString() {
var queryString = "";
var queryStringBegun = false;
$("#facet_properties input[type='checkbox']").each(function() {
if ($(this).is(':checked')) {
var checkboxFullName = $(this).attr('name');
var checkboxName = checkboxFullName.substr(checkboxFullName.lastIndexOf('_') + 1);
var concatenationCharacter = '&';
if (!queryStringBegun) {
concatenationCharacter = '?';
}
queryString.concat(concatenationCharacter).concat(checkboxName);
queryStringBegun = true;
}
});
return queryString;
}
getQueryString メソッドでクエリ文字列変数を作成しようとしていますが、どういうわけか queryString が空のままです。チェックボックスをオンにすると、queryString.concat(concatenationCharacter).concat(checkboxName); というステートメントが表示されます。に達し、「concetenationCharacter」と「checkboxName」の値が正しいことがわかります。では、なぜ私の関数は "" を返すのでしょうか?
これはおそらく変数のスコープの問題か何かです。私はそれが単純なものだと推測しています。ありがとう!