2012-07-30 96 views
1

我想在玉做一個簡單的警報事件,但它不以某種方式工作,真的不知道最新的問題,也許你們可以找到它?玉在onclick事件

代碼: PS:你可以無視socket.io代碼

html 
head 
script(src='jquery-1.7.1.js') 
    script(src='/socket.io/socket.io.js') 
script 
    var socket = io.connect('http://localhost:3002/add_users'); 
    socket.on("update", function(message) { 
    console.log("update: ", message) 
    }); 
    $(function() { 
    $("button").click(function() { 
    alert("hej"); 
    }); 
    }); 
body 
.container 
.content 
    header.page-header 
     h1 Welcome 
    .row 

      form(action='/', method='post') 
       fieldset 
         label(for="name") Namn 
          input(type="text", size="30", name="name", required="required") 
          button Save 
      ul 
       li <a href="/users">User list</a> 
+0

你可以發佈渲染頁面嗎? – Fresheyeball 2012-07-31 15:02:46

回答

0

我沒有很多的經驗玉自己,但不是你script(src='/socket.io/socket.io.js')縮進不正確?

如果是這樣,我認爲會導致socket.io.js不能正確加載。如果加載不正確,那麼在綁定jQuery DOMReady偵聽器之前,您的JavaScript執行會在io.connect中斷。

+0

正如我所提到的,與socket.io代碼無關,我只是想要一個簡單的警報消息。即使我刪除了socket.io代碼,它沒有給出一個單一的彈出警報。 – nihulus 2012-07-30 11:58:57

+0

@nihulus:即使不相關的代碼也可能會破壞您的執行,但是,如果它有問題。你介意發佈渲染輸出嗎? – 2012-07-30 12:16:18

+0

@nihulus要擴展David的答案,請檢查生成的輸出並查看您的socket.io腳本是否正在加載到'標記中。這不應該縮進比其他腳本標籤更多。另外,我會將socket.io文件移入jquery ready函數或body標籤之後,因爲這可能在腳本加載之前執行,並且js錯誤會阻止執行'.click'函數。 – 2012-07-31 15:06:04

0

我想你的$("button").click()代碼在加載DOM之前執行。你應該明確地將你的函數傳遞給$.ready()。 PS:我知道將函數傳遞給jQuery(你所做的)應該和做$.ready()一樣,但是我之前有過類似的問題。

+2

'$(function()'與文檔準備好相同 – Fresheyeball 2012-07-31 15:01:14

+0

我認爲向'$()'函數傳遞一個函數是'$ .ready()'的一個快捷方式,因爲關於jquery 1.4。 – 2012-07-31 15:02:08