2016-10-05 15 views
1

ボタンクリックで再実行するためにjQueryコードが必要な非常にユニークな状況があります。追加合併症は以下のとおりです。jQuery - ボタンクリックで関数を再実行

  • は私がブラウザウィンドウが
  • すべてのコードは、のsetTimeout()のパラメータの範囲内でリフレッシュするために許可することはできません - わからない、これは本当に「

私ができる重要な場合クリックイベントの中にコードをラップするのは、ページの最初のオープン時またはリフレッシュ時に自動的に実行する必要があるためです。

setTimeout(function() { 
    // all the scripts that need to run 
}, 2500); 

$('.btn').click(function() { 
    // re-run the above code without refreshing window or browser 
}); 

この文脈でのボタンのクリックでコードを再実行する方法はあります:次のコンテキストのビットは、私は嘲笑しまし追加するには?

+0

の可能性のある重複した[再利用可能なjQueryのクリック機能を記述する方法?](http://stackoverflow.com/questions/22783420/how-to-write-a-reusable-jquery -click-function) –

答えて

2

これは実際にはかなり一般的な問題です。

あなたは両方の場所で実行する必要があるコードが含まれている機能を確認し、そしてのsetTimeoutとのonclickハンドラから関数を呼び出す:

function someCode() { 
    // Your code here 
} 

setTimeout (someCode, 2500); 

$('.btn').click(someCode); 

疑いで、機能を作るとき。

2

は、独自の機能で実行されている必要がありますすべてのコードを入れて、あなたが何ができるか

function myFunc() 
{ 
    // all the scripts that need to run 
} 

setTimeout(function() { 
    myFunc(); 
}, 2500); 

$('.btn').click(function() { 
    myFunc(); 
}); 
+0

実際に関数に 'myFunc'をラップする必要はありません。タイムアウト関数とクリック関数の両方を参照するだけで関数に渡すことができます。 – synthet1c

+0

最初に来た答えを選ぶ必要がありましたが、これも完璧なソリューションですので、ありがとう! – Andyjm

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>

1

Javascriptオブジェクトは参照によって渡されるので、各コールバックで関数を名前で参照するだけで済みます。

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>

関連する問題