0

我有一个用于检查服务器结果的 javascript 文件。如果经过一定次数的尝试后仍未获得结果,我想在页面上添加一个按钮,以便用户可以手动检查结果。但是,该按钮在添加时不起作用。我该如何解决它,我是否需要做一些事情才能使该功能在按钮范围内?

这是添加按钮的代码:

$('.submitter').after("<span class='btn' onClick=delayDoing(0)>Check again</span>")

它创建了以下什么都不做的按钮:

<span class="btn" onclick="delayDoing(0)">Check again</span>

下面是javascript的文件。(我缩短了它并删除了一些 ERB 的东西。)

 function delayDoing(attempts){
     setTimeout(function(){checkServer(attempts)}, 3000);
 }

 function checkServer(attempts){
     if ($('.results').css('opacity') === '0') { //no results           
         if(attempts < 4) {   
             // {code to check for results...}

             delayDoing(attempts+1);
         }
         else{
             $('.submitter').after("<span class='btn' onClick='delayDoing(0)'>Check again</span>")
         }
     }
}

jQuery(function() {
    delayDoing(0)
});
4

1 回答 1

1

我会做这样的事情:

var submit = $('.submitter'); //reference to the submitter button
var newButton = $("<span class='btn'>Check again</span>"); //in-memory button

submit.after( newButton ); //append the button to the DOM
newButton.click(function(){ delayDoing(0); }); //add a click event to the button and call for your function

请记住,javascript 在浏览器中加载时会被编译,因为该元素在编译时不存在,它不会触发 click 事件,您需要做的是将元素附加到 DOM 并添加一个事件。

希望这会有所帮助,干杯。

于 2013-10-09T16:02:07.200 回答