2011-06-08 43 views
0

用於查找jQuery中輸入框的值的example如下。輸入框的val()的jQuery示例

<!DOCTYPE html> 
<html> 
<head> 
    <style> 

    p { color:blue; margin:8px; } 
    </style> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 
</head> 
<body> 
    <input type="text" value="some text"/> 
    <p></p> 
<script> 
    $("input").keyup(function() { 
     var value = $(this).val(); 
     $("p").text(value); 
    }).keyup(); 
</script> 
</body> 
</html> 

我有2個問題。

  1. 爲什麼腳本在體內? (我試圖把它放在head標籤和它之間不是工作)。
  2. 爲什麼有兩個不同的keyup()方法,一個直接在$(「input」)之後,另一個在函數之後?

回答

3
  1. 如果你希望它在頭部運行,你應該使用.ready().load()(通常.ready()
  2. 第二.keyup()火災事件

<!DOCTYPE html> 
<html> 
<head> 
<style> 
    p { color:blue; margin:8px; } 
</style> 
<script src="http://code.jquery.com/jquery-latest.js"></script> 
<script> 
$(document).ready(function(){ 
    $("input").keyup(function() { 
     var value = $(this).val(); 
     $("p").text(value); 
    }).keyup(); 
}); 
</script> 
</head> 
<body> 
    <input type="text" value="some text"/> 
    <p></p> 
</body> 
</html> 

http://jsfiddle.net/eqfbY/

準備等到D OM已準備好解析。否則,你正在運行的是一個內聯腳本,它按解析的順序運行。

注意的ready()速記版本是:

$(function(){ 
    $("input").keyup(function() { 
     var value = $(this).val(); 
     $("p").text(value); 
    }).keyup(); 
}); 
2

該腳本不起作用,因爲當腳本在頭部執行時,$("input")尚不存在。

第二個keyup()觸發了一個keyup()事件,但不需要綁定keyup事件。

0
  1. 它只適用於人體的結束,因爲它不是在onload/ready事件處理程序,所以它有後執行標籤已被創建。順便說一句,這是錯誤的方法。

  2. 第一keyup呼叫處理程序添加到事件處理程序隊列,第二個執行所有的處理程序(所以在這種情況下,一旦加載頁面,而無需首先類型的東西,你得到一個不錯的值)。

0

你的腳本應該去裏面是這樣的:

$(function(){ 

}); 

如果您立即開始使用DOM做的事情你一定的DOM已建成,你會開始引用的元素,唐」前現在還沒有。把它放在這個函數裏面就是jQuery的縮寫,一旦DOM準備好就可以執行它。

0

@robbrit

爲什麼體內的腳本? (我試圖把它放在頭標籤之間,它不起作用)。

鉻有着別樣的JS處理w.r.t的功能,特別是當你使用使用jQuery標籤或類似的東西多臺服務器的網頁。所以,JavaScript必須在body標籤內部定義才能工作。其他瀏覽器不應該這樣。

爲什麼有兩個不同的keyup()方法,一個直接在$(「input」)之後,另一個在函數之後?

該函數在每次調用瀏覽器時自動執行'keyUp'。第一個注意事項是指定在輸入爲keyUpped時執行的操作,其次是執行keyUp功能。

相關問題