57340

[code]

    function push() {
        let hoge = 1;
        $('#selector').on('click', buttonPush);
    };
    
    function buttonPush(hoge) {
         hoge++;
         changeNumber(hoge);
    };
    
[/code]

上記のように、onイベントで呼び出した名前付きの関数に、どのように記述したら引数を渡せるのでしょうか。

[code]

    function push() {
        let hoge = 1;
        $('#selector').on('click', funcition(hoge){
             hoge++;
             changeNumber(hoge);
        });
    };
    
[/code]

ネットで調べると、上記のような無名関数の場合の書き方は散見されましたが、名前付きの関数の場合の書き方が見つけられず、質問した次第です。


CC BY-SA 4.0
2019-08-13T22:40:15.733
57339
2019-08-13T23:55:57.610
2019-08-13T23:52:38.467
2238
35433
question
javascript jquery
onイベントに関数名を付けた場合の引数の渡し方を教えてください。


イベントハンドラの引数を束縛する場合、 `Function.prototype.bind` メソッドを使うことが出来ます。

[code]

    function push() {
      let hoge = 1;
      $("#selector").on("click", buttonPush.bind(this, {hoge}));
    }
    
    function buttonPush(args, event) {
      args.hoge++;
      changeNumber(args.hoge);
    }
    
[/code]

もし jQuery を使用しているのであれば、 `event.data` オブジェクトを使うことも出来ます。

[code]

    function push() {
      let hoge = 1;
      $("#selector").on("click", {hoge}, buttonPush);
    }
    
    function buttonPush(event) {
      event.data.hoge++;
      changeNumber(event.data.hoge);
    }
    
[/code]

また、 `$.proxy` メソッドを使うことも出来ます。

[code]

    function push() {
      let hoge = 1;
      $("#selector").on("click", $.proxy(buttonPush, null, {hoge}));
    }
    
    function buttonPush(args, event) {
      args.hoge++;
      changeNumber(args.hoge);
    }
    
[/code]


CC BY-SA 4.0
2019-08-13T23:55:57.610
57340
2019-08-13T23:55:57.610
32986
57339
answer