我想用data()
存储一个回调。我面临的问题是该函数在存储它的那一刻开始执行,并且我希望在用户单击时执行该函数
JS
function showOnlyOnClick(message)
{
alert(message);
}
$("button").click(function()
{
var callback = $(this).data("callback");
if(callback)
{
callback;
}
});
$("button").data("callback", showOnlyOnClick("not yet!!!"));
答案 0 :(得分:1)
问题是因为您要立即调用showOnlyOnClick()
函数并将该函数调用中的响应分配给data
属性。
要解决此问题,您可以将调用包装在匿名函数中,以便为data
属性提供函数 reference ,您可以在事件发生时稍后调用该属性。试试这个:
function showOnlyOnClick(message) {
alert(message);
}
$("button").click(function() {
var callback = $(this).data("callback");
callback && callback();
});
$("button").data("callback", function() {
showOnlyOnClick("not yet!!!")
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button>click me</button>
答案 1 :(得分:0)
尝试一下:
function showOnlyOnClick(message) {
alert(message);
}
$("button").click(function() {
var callback = $(this).data("callback");
if (callback) {
callback("on click");
}
});
$("button").data("callback", showOnlyOnClick);
您正在最后一行执行该功能。您需要存放它的身体。