现在我处理有点棘手,因为我有一个函数生成一个数组,我想在点击一个按钮后传递给另一个函数。为了让你明白这一点,我正在谈论这样的事情:
function d(){
...
while(true){
m.push([x,y]);
...//we have finished pushing things into the array
}
if(false){
//here I have to somehow pause the function and make it wait until
$('#idofabutton').data('clicked');
//and after this step has been passed, to call another function passing it the generated array...
function mo(m);
}
}
如果您有任何建议,请评论我对任何想法持开放态度,但我更倾向于坚持这个程序结构,而不是改组它或重写它,因为它对我来说很难把它带到原来的地方...... :) 附:只是补充一下,除此之外,我还说:
$('idofabutton').click(function(){
$(this).data('clicked', true);
});
PS2如果可以考虑将mo()传递给jquery函数,如果可以的话我可以轻松地将其重新传输到目标函数,那我会更好。
答案 0 :(得分:1)
您可以使用引用您创建的数组的回调函数设置单击处理程序:
// display the contents of the array m
function mo(m) {
$("#arraycontents").html(JSON.stringify(m));
}
function d() {
var m = [];
// build the array
while (m.length < 10) {
m.push([m.length, m.length * 2]);
}
// register the click callback
$('#idofabutton').click(function(e) {
mo(m);
});
}
// call the function d() to build the array and register the click handler
d();
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="idofabutton">Click Me!</button>
<div id="arraycontents"></div>
&#13;
答案 1 :(得分:0)
所以我确信有很多方法可以做到这一点,但这是一种方式。
var stillRun = true;
function execute(){
setTimeout(function(){
if(stillRun)
{
$("#someId").append("t")
execute();
}
},10)
}
$(document).ready(function(){
$("#someButton").click(function(){
alert("stop")
stillRun = false;
})
execute();
})
基本上setTimeout
使得点击实际上是可以访问的,并且页面也不会从无限循环中崩溃。
以下是JsFiddle.