gpt4 book ai didi

javascript - 为什么当我通过 jQuery 将函数附加到回调时,我传递给函数的 functionToCallOnOk 没有被调用?

转载 作者:行者123 更新时间:2023-11-28 21:05:18 24 4
gpt4 key购买 nike

所以我尝试这样的代码:

function showAlertWithCallback(w, h, name, body_text, functionToCallOnOk) {
prepareWindow();
var ran_alert_number=Math.random()*50000;
$("#alert_content").html(body_text + '<br/>' + '<input type=\"button\" class=\"eButton\" value=\"Cancel\" onClick=$(\".alert\").hide() />' + '<input id=\"general-alert-'+ ran_alert_number +'\" type=\"button\" class=\"eButton\" value=\"OK\" onClick=\"$(\'.alert\').hide();\"/>');
$('#general-alert-' + ran_alert_number).click(functionToCallOnOk);
// also tried $('#general-alert-' + ran_alert_number).click(function(){functionToCallOnOk();});
showAlertBase(w, h, name);
}

通过类似的方式调用:

showAlertWithCallback(
600,
100 ,
('New name for to ' + file_title + ' file.'),
'<input type="text" style="width:590px" class="text" value=\"' + file_title + '\">',
function(){
alert("hi!");
}
);

运行时没有错误(chrome 调试器),但单击“确定”时不会调用函数。为什么以及如何解决这样的问题?

最佳答案

Math.random()*50000当您与 '#general-alert-' 连接时,会产生一个类似 38518.060150090605 的数字在 jQuery 调用中将产生一个像这样的选择器:

#general-alert-38518.060150090605

这将被视为一个选择器,它查找 id 为 general-alert-38518 的元素和类(class)060150090605 ,因为类名位于点之后。

要生成随机数,请使用 Math.floor(Math.random()*5000)相反。

更好的选择是使用递增的全局变量(例如,每次使用时 _global_counter++),这样您就没有机会获得具有相同 id 的两个元素。

更好的解决方案是在 JavaScript 中创建实际的 DOM 元素,将事件附加到这些元素,然后将这些元素插入文档中的正确位置。这样他们就根本不需要 ID。

关于javascript - 为什么当我通过 jQuery 将函数附加到回调时,我传递给函数的 functionToCallOnOk 没有被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10020626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com