Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 将函数存储在data()中并稍后执行_Jquery - Fatal编程技术网

Jquery 将函数存储在data()中并稍后执行

Jquery 将函数存储在data()中并稍后执行,jquery,Jquery,我想用data()存储回调。我面临的问题是,函数在我存储它的那一刻就在执行,我希望在用户单击时执行 JS 小提琴:试试这个: function showOnlyOnClick(message) { alert(message); } $("button").click(function() { var callback = $(this).data("callback"); if (callback) { callback("on click"); } }); $(

我想用
data()
存储回调。我面临的问题是,函数在我存储它的那一刻就在执行,我希望在用户单击时执行

JS

小提琴:试试这个:

function showOnlyOnClick(message) {
  alert(message);
}

$("button").click(function() {
  var callback = $(this).data("callback");

  if (callback) {
    callback("on click");
  }
});

$("button").data("callback", showOnlyOnClick);

您正在执行最后一行中的函数。您需要存储其主体。

问题在于,您正在立即调用
showOnlyOnClick()
函数,并将该函数调用的响应分配给
数据属性

要解决此问题,您可以将调用包装在匿名函数中,以便提供对
数据
属性的函数引用,稍后在事件发生时可以调用该属性。试试这个:

功能仅显示单击(消息){
警报(信息);
}
$(“按钮”)。单击(函数(){
var callback=$(this).data(“callback”);
callback&&callback();
});
$(“按钮”).data(“回调”,函数(){
仅显示单击(“尚未!!!”)
});


单击“我”
,这样做有效时,我需要传递一个参数。回调赋值可以在不同的时间在多个地方完成,每个地方都有不同的参数。现在我说了,我想我可以将参数附加到不同的数据键中,对吗?@MatíasCánepa是的,你也可以这样做。
function showOnlyOnClick(message) {
  alert(message);
}

$("button").click(function() {
  var callback = $(this).data("callback");

  if (callback) {
    callback("on click");
  }
});

$("button").data("callback", showOnlyOnClick);