2016-02-29 62 views
3

更新:我附上了一段代碼,以顯示此處正在工作但不在我的網站上的代碼。Javascript/jquery無法正常工作,立即打印警報

東西在我的本地網站上用我的JavaScript。我決定做一個按鈕

<button id="test">test</button> 

和運行

$('#test').click(alert("hello")); 

的問題是,當我重新加載頁面,而不是當我按下按鈕報警情況進行測試。有沒有人有類似的問題? 我有一些ajax在網站上運行,一些PHP和基本(html,css,js)。

任何幫助將不勝感激。

$('#test').click(function() { alert("hello"); }); 
 

 

 
function showWords(chooseDiv,str,table) { 
 
    if (str == "") { 
 
     document.getElementById(chooseDiv).innerHTML = ""; 
 
     return; 
 
    } else { 
 
     if (window.XMLHttpRequest) { 
 
      // code for IE7+, Firefox, Chrome, Opera, Safari 
 
      xmlhttp = new XMLHttpRequest(); 
 
     } else { 
 
      // code for IE6, IE5 
 
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
 
     } 
 
     xmlhttp.onreadystatechange = function() { 
 
      if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
 
       document.getElementById(chooseDiv).innerHTML = xmlhttp.responseText; 
 
      } 
 
     }; 
 
     xmlhttp.open("GET","getWords.php?filter="+str+"&table="+table,true); 
 
     xmlhttp.send(); 
 
    } 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 

 

 
<button id="test">test</button>

+0

你能分享一些代碼有問題發生? –

回答

4

包裝你警覺到function() { alert (...); }否則就立即觸發

$('#test').click(function() { alert("hello"); }); 

要正確安裝此事件處理程序之前,你可以:1)移動它的HTML標記以下,最好關閉</body>標記,或者2)將其放置在jQuery DOM準備好的監聽器中,然後將其保留在頁面的任何位置(只要它低於jquery.js本身),如下所示:

$(document).ready(function() { 
    $('#test').click(function() { alert("hello"); }); 
}); 
+0

它現在不會在重新加載時啓動,這很好,但該按鈕仍然不會激活警報。我試圖在控制檯上添加命令,然後它可以工作。它可能是'AJAX'搞亂我的jQuery嗎? –

+0

只有當您在ajax回調中對此按鈕執行某些操作時才需要替換它。如果可以,請顯示更多html和javascript。 –

+0

真的沒有太多的其他代碼要添加。我有'AJAX'在頁面上使用'PHP'調用'MySQL'數據庫,但是對於不同的div,我沒有其他的jQuery,而不是你在上面的代碼片段中看到的。我真的沒有看到可能導致它的原因。 –

1

在您的代碼中,alert()函數立即運行。這是一樣的這樣做:

var val = alert("hello"); // var val = undefined; 
$('#test').click(val); // $('#test').click(undefined); 

爲了運行它,只有當元素被點擊你需要把它放在一個回調函數,就像這樣:

$('#test').click(function() { 
    alert("hello"); 
}); 

您也可以定義回調函數爲「正常」的功能,然後將其傳遞給.click()方法,是這樣的:它們被稱爲當

function handleClick() { 
    alert("hello"); 
} 
$('#test').click(handleClick); 

回調函數只運行。在這種情況下,當用戶點擊元素時,.click()方法將運行它。

爲了將點擊處理程序綁定到元素上,需要運行Javascript後的以及HTML中的。你應該做兩兩件事:

  1. 環繞你的jQuery的東西在下面:

    $(function() { 
        // Put your jQuery code here... 
    }); 
    
  2. 包括你在頁面底部的JavaScript。這將確保您的HTML確實已加載,並且它還具有使您的網站看起來更快加載的額外好處; JavaScript文件停止網站的渲染,並將其放在底部防止這種情況。

    <html> 
        <head>...</head> 
        <body> 
         ... 
         <script src="myscripts.js"></script> 
        </body> 
    </html> 
    
+0

謝謝你的回答。 –

+0

@FrederikPetersen Det varsålidt。 –