そこで、jQuery でグローバル変数を使用する必要性を回避するための素晴らしいソリューションを見つけました。名前空間と言うところはどこでも、もともとグローバル変数を使用するつもりでした。
ただし、単純なクリック関数のパラメーターを介して名前空間変数を送信できません。
これらの変数を保存してモーダル ウィンドウを作成するために使用したり、動的に作成されたボタンがどのモーダルを制御するかをアプリに知らせたりする必要があるため、これを実行したいと考えています。
以下は、最初に変数 My jQuery 名前空間オブジェクトを作成する名前空間オブジェクトの例です。
$.reg = {
masterRole : " ",
role_ID : " ",
row_Name : " ",
ary_Check_Role : []
};
$(document).ready(function () {
...
アプリを実行すると、このボタンをクリックすると、これらの名前空間変数の値が設定されます (HTML からデータを取得します) 変数は自分の roleBtnClicked 関数に設定されます
function roleBtnClicked(event){
$.reg.masterRole = $(this).html(); /* Get role name: Actor */
$.reg.role_ID = $(this).attr('role'); /* Get role-1 */
$.reg.rowName = $(this).attr('row'); /* Get row-role-1 */
$.reg.blueBtn = $(this).attr('blue'); /* Get blue-btn-1 */
いくつかのチェックボックスをクリックしてデータを配列にプッシュした後、モーダル ウィンドウがポップアップし、[完了] ボタン (下) をクリックすると、すべての変数を名前空間 vars に再度保存する必要があります。
完了ボタンをクリックした関数。ここで、param vars を介して名前空間変数を渡そうとしています。
$(".doneButton").click(
{
param1: $.reg.masterRole,
param2: $.reg.role_ID,
param3: $.reg.rowName,
param4: $.reg.ary_Check_Role
},
doneBtnClicked);
function doneBtnClicked(event){
alert('$.reg.roleName = '+$.reg.roleName);
alert('event.data.param1 = '+event.data.param1);
masterRole= event.data.param1;
role_ID = event.data.param2;
rowName = event.data.param3;
ary_Check_Role = event.data.param4;
上記のクリック機能の 2 つのアラートに注意してください。最初のアラートには正しい値が表示されますが、2 つ目のアラートには何も表示されません。また、配列を取得するのにも問題があります。
質問:このようにする必要がありますか? 配列を jQuery 名前空間に正しく渡し、それをクリック関数のパラメーターに渡すにはどうすればよいですか?