2012-09-28 59 views
2

我有我的索引頁面上輸入:的jQuery的onclick砂礦無所事事

<input type="button" name="goReplaceAll" value="Go" id="allReplaceGo" style="cursor:hand;" /> 

而且從jQuery的一個onclick電話:

$(document).ready(function() { 
     $('#allReplaceGo').click(replaceAll); 
}); 
function replaceAll(){ alert('a'); } 

當我按一下按鈕,沒有任何反應。當我在HTML中使用onclick =「replaceAll()」時,出現錯誤:Uncaught ReferenceError:replaceAll未定義

我無法弄清楚這些錯誤或任何可能的原因之間的聯繫。

的代碼是目前住在http://www.texturepacker.net

編輯:看起來我得到了Firefox和Chrome兩種不同的結果,Chrome並沒有什麼而Firefox警報(「A」)的一次加載頁面。現在我只是很困惑?

編輯:看起來後來在我的代碼中無關的語法錯誤打破了呼叫。現在,當dom加載時會調用replaceAll(),我的問題是現在爲什麼不是replaceAll()被啓動onclick,而是一旦dom加載,我是否缺少明顯的東西?

+0

爲我工作http://jsfiddle.net/G5vvy/ – Anoop

回答

1

看起來像一個語法錯誤這裏...

線196在您的腳本文件說

$(this).("src",tmpSrc); 

它應該是

$(this).attr("src",tmpSrc); 

修正了,它應該是所有細..

而且第7行

$('#allReplaceGo').live("click",replaceAll()); 

應該是

$('#allReplaceGo').live("click",replaceAll); 

另外,作爲版本1.7 .live()是棄用。嘗試使用。對()代替

+0

其實,解決這個問題然後真正的問題就會顯而易見。問題中的代碼不是在頁面中使用的代碼。問題中的代碼很好,該頁面上的代碼使用'live'並調用該方法,而不是將它傳遞給活動。 –

+0

是的,代碼工作正常..但代碼似乎沒有爲OP編譯,因爲這個權利..所以只是指出它 –

+0

另外這應該是$('#allReplaceGo')。live( 「點擊」 的replaceAll);而不是OP寫的什麼 –

-2

發生這種情況,可能是因爲replaceAll函數不在jQuery範圍內。 試着把她放在$(document).ready範圍內。

+0

函數可以是DOM ready事件的範圍之外。它是更好地之外包括他們的表兄弟姐妹範圍問題,如果你想調用DOM準備事件外的函數 –

-2

你的代碼看起來應該像

$(document).ready(function() { 
     $('#allReplaceGo').click(function(){ 
      replaceAll() 
     }); 
    }); 
    function replaceAll(){ alert('a'); } 
+3

這實際上是不必要的。如果沒有參數傳遞給函數,那麼只傳遞函數是完全有效的(並且更簡潔)。 –

+0

這是完全有效的 –

+0

我測試過這段代碼,適合我。檢查您的js文件在第188行標記爲「$(this)。」(「src」,tmpSrc);「爲一個未被捕獲的字符串。 可能是你的代碼不能正常工作 – Enoban