我有一个非常独特的情况,我需要一堆jQuery代码才能在按钮点击时重新执行。增加的并发症是:
我无法将代码包装在click事件中,因为它需要在首次打开或刷新页面时自动运行。为了添加一些上下文,我嘲笑了以下内容:
setTimeout(function() {
// all the scripts that need to run
}, 2500);
$('.btn').click(function() {
// re-run the above code without refreshing window or browser
});
在这种情况下,有没有办法在点击按钮上重新运行代码?
答案 0 :(得分:2)
这实际上是一个相当普遍的问题。
创建一个包含在两个地方运行所需代码的函数,并从setTimeout和onclick处理程序调用该函数:
function someCode () {
// Your code here
}
setTimeout (someCode, 2500);
$('.btn').click(someCode);
如有疑问,请提供帮助。
答案 1 :(得分:2)
将所有需要运行的代码放在自己的函数中,并在两个地方调用该函数
function myFunc()
{
// all the scripts that need to run
}
setTimeout(function() {
myFunc();
}, 2500);
$('.btn').click(function() {
myFunc();
});
答案 2 :(得分:1)
您可以做的是在变量中设置函数,可以在setTimeout()
和click()
事件中调用
var nameOfFunction = function() {
console.log('Hello World!');
}
setTimeout(nameOfFunction, 2500);
$('.btn').on('click', function(e) {
e.preventDefault();
nameOfFunction();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button class="btn">Click Me</button>
答案 3 :(得分:1)
Javascript对象通过引用传递,因此您只需在每个callacks中按名称引用该函数。
function myFunc(){
// all the scripts that need to run
}
setTimeout(myFunc, 2500)
$('.btn').click(myFunc)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>