2014-03-12 112 views
0

我在這裏搜索了很多地方,我一直無法找到我的情況,所以這裏就是這樣。jQuery .click()僅在加載時觸發

我試圖避免使用HTML內嵌的onclick,所以在這方面,我現在用的是jQuery的點擊()像這樣

$(document).ready(function(){ 
    $("#start").click(game()); 
}); 

當我用這個,功能遊戲()自動和只運行運行和加載時間。

如果我使用內聯onclick,它只在點擊時才起作用,並且每次點擊時它都起作用。爲什麼是這樣?

編輯..我發誓我試過..哦,它的工作!

回答

6

您呼叫的game()功能和它的結果傳遞給.click()。由於其結果(大概)不是一個函數,你根本沒有設置一個點擊處理程序。你需要傳遞給函數的引用,所以刪除括號:

$("#start").click(game); 
+0

我會嘗試接受這個答案的明天。儘管目前我無法這樣做。謝謝!! –

3

您正在通過添加圓括號立即執行game()。如果你想game要在點擊計算,那麼你需要

$(document).ready(function(){ 
    $("#start").click(game); 
}); 
3

你需要把它改成這樣:

$("#start").click(game); 
0

也許YOUE需要定義遊戲是這樣的:

var game = function(e,...) 

$("#start").click(game); 

並記住第一個參數是事件對象,從click函數傳遞。

問候。

0

你可以在html元素中使用jquery函數。

<canvas id="game" onclick="jqueryFunction()"></canvas> 

在jqueryFunction()作出的if else語句 所以如果遊戲運行:起火。

否則如果遊戲沒有運行:加載遊戲。

+0

是的,這個問題已經表明,這是有效的。 – nnnnnn

+0

我試圖避免這種情況,雖然我沒有任何理由避免它,但我只是嘗試了不同的事情。 –

+0

這是我知道它可以完成的唯一方法。 – JMD

1

總是建議使用。在 &一個匿名函數,因爲它需要像這些混淆出來的圖片;

$(document).ready(function() { 
     $('#start').on('click', function() { 
      game(); 
     }); 
    } 
); 

你在做什麼是類似於

$(document).ready(function() { 
     $('#start').on('click', function() { 
      game(); 
     }()); 
    } 
);