0

そこで、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 名前空間に正しく渡し、それをクリック関数のパラメーターに渡すにはどうすればよいですか?

4

1 に答える 1