2014-09-04 67 views
1

我遇到了jQuery的問題。我試圖創建一個甚至是由單個按鍵觸發的觸發器,而是其中的一部分 - 由任何鍵觸發。不明白爲什麼。我做了很多次,沒有問題。突然之間,這種特定的代碼組合變得怪異。我不明白。我已經嘗試了各種各樣的實驗來弄清楚。該問題在多個瀏覽器上非常具體且一致。請幫忙!這裏是該頁面的鏈接。 http://www.lyliansill.com/test.html> 看看我在說什麼新聞'a',它的工作原理應該如此。重新加載並按任何其他鍵,事件的一半仍然被觸發。jquery按鍵狀況故障任何鍵

<!DOCTYPE html PUBLIC "-//W3C/DTD/ XHTML 1.0 Strict/EN" "http://www.w3.org/TR/xhtml1/dtd/xhtml1-strict.dtd"> 

<!-- This file is on level 02 --> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 

<head> 

    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> 

    <title>Test</title> 

    <style type="text/css"> 
    .hidden 
    { 
     display: none; 
    } 
    .select 
    { 
     color:#cc0000; 
    } 

    </style> 

</head> 

<body> 

    <h1 class="test hidden">Test</h1> 

<script type="text/javascript" src="playground/libraries/jquery.js"> 

</script> 
<script type="text/javascript"> 

function showIt() 
{ 
    $(".showIt").show(); 
} 

$(document).keypress 
(
    function(e) 
    { 
     if (e.which === 97) 
     $(".test").addClass("select"); // this line works like it should 

     $(".test").addClass("showIt"); // these two lines are activated... 
     showIt();      // ...by pressing any key! why?? 
    } 
); 
</script> 

</body> 
</html> 
+0

您忘記了大括號。 – hellaminx 2014-09-04 23:46:51

回答

2

這就是爲什麼你應該確保使用括號,讓我們來看看代碼:

if (e.which === 97) 
$(".test").addClass("select"); // this line works like it should 

$(".test").addClass("showIt"); // these two lines are activated... 
showIt();      // ...by pressing any key! why?? 

注意if語句沒有括號:if(){ ... },所以只有當if語句爲true時,纔會執行下面的行,但其餘行不在if語句中:

$(".test").addClass("showIt"); // these two lines are activated... 
showIt();      // ...by pressing any key! why?? 

始終運行。要修復此添加括號:

if (e.which === 97) { 
    $(".test").addClass("select"); // this line works like it should 
    $(".test").addClass("showIt"); // these two lines are activated... 
    showIt();      // ...by pressing any key! why?? 
} 
+0

別擔心,我們之前都做過類似的錯誤(當然,如果你用Python編程的話),它絕不意味着你的愚蠢。非常聰明的人經常犯這樣的錯誤,然後感到愚蠢。 – 2014-09-04 23:52:14

+0

:)呵呵謝謝! – 2014-09-04 23:55:32

0

這裏是如何解決它(添加大括號):

function(e) { if (e.which === 97) { $(".test").addClass("select"); // this line works like it should

 $(".test").addClass("showIt"); // these two lines are activated... 
     showIt(); 
    }      // ...by pressing any key! why?? 
}