簡體   English   中英

使用.on()將變量傳遞給函數

[英]Passing variables to function using .on()

我有一個帶有自己的類的文本輸入字段: .my_ids 我正在嘗試使用jquery編寫腳本,以便每次輸入更改時,它將調用特定函數。 如果我不嘗試將變量傳遞給函數,這很容易:

$(document).on('change','.my_ids', testfunc);
function testfunc(){
    alert("good");
}

每當輸入更改時,該功能都會向我發送警報; 效果很好。

但是,如果我嘗試將變量傳遞給警報功能,例如:

$(document).on('change','.my_ids', testfunc("hereismyvariable"));
function testfunc(myvariable){
    alert(myvariable);
}

它在文檔加載時發送警報,然后在輸入更改時不發出警報。 我可能會缺少什么?

在這里,您要傳遞一個函數: $(document).on('change','.my_ids', testfunc);
在這里,您要傳遞函數的返回值: $(document).on('change','.my_ids', testfunc("hereismyvariable"));
因為testfunc("hereismyvariable") = undefined (沒有返回值),所以您添加了一個具有未定義函數的事件處理程序。

你會這樣做

$(document).on('change','.my_ids', function() {
  testfunc("hereismyvariable");
});

或者你可以這樣做

$(document).on('change','.my_ids', testfunc("hereismyvariable"));

function testfunc(myvariable){
  return function() {
    alert(myvariable);
  }
}

()運算符調用函數,因此將函數的返回值設置為處理程序,這似乎不是您想要的。 其他答案提出了幾種解決方案。 另一種選擇是使用data參數:

$(document).on('change', '.my_ids', "hereismyvariable", testfunc);

function testfunc(event) {
    console.log(event.data); // "hereismyvariable"
}

data參數可以是任何東西。 event對象的data屬性引用傳遞的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM