[英]Jquery live function suddenly not working anymore
我正在使用jQuery live()
函數來檢測用戶何時按某些特殊鍵(箭頭等):
$('.TextBox1').live('keydown', function(e) {
var keyCode = e.keyCode || e.which;
if (keyCode == 40) {
e.preventDefault();
// ...
}
});
它工作正常幾個月,突然昨天它停止工作,阻止它下面的每一行JS代碼執行。 我試圖用.keyup
函數替換它,但這沒有幫助。 可能發生了什么?
我假設您已更新到最新版本的jQuery? live()
自jQ1.7以來已被棄用,現在從1.9開始刪除。
相反,您應該使用帶有委托參數的on()
:
$(document).on('keydown', '.TextBox1', function(e) {
var keyCode = e.keyCode || e.which;
if (keyCode == 40) {
e.preventDefault();
//...
}
});
請注意,為了獲得最佳性能,您應該將上面示例中的document
替換為.TextBox1
最接近的父元素,該元素在頁面加載后不會動態附加到DOM。
jQuery .live已被棄用。 雖然不是嚴格相同,但使用.on()對於您的示例,它看起來像:
$('body').on('keydown', '.TextBox1', function() {
var keyCode = e.keyCode || e.which;
if (keyCode == 40) {
e.preventDefault();
...
}
}
jQuery 1.9之后刪除了.live()
。
從現在開始你必須使用.on
。
.live()
已在最新版本的jQuery 1.9中刪除。
您可以使用jQuery Migrate插件 ,或更改代碼以使用.on
。
.live在jQuery 1.9中刪除了。 如果你正在調用最新版本的jQuery,它將會破壞。
更改您的代碼以使用.on
使用jquery網站上提到的這個。 對於你的例子,它將是
$(document).on( "keydown", ".TextBox1", function() { });
從jQuery 1.7開始,不推薦使用.live()方法。 使用.on()附加事件處理程序。 舊版jQuery的用戶應該使用.delegate()而不是.live()。
有關實時的更多信息,請閱讀此內容
實際上已經在jq 1.9中刪除了,而不僅僅是已棄用! 您可以使用插件來兼容或更新您的代碼
.live()
在jq 1.9中已棄用,因此您可以嘗試這樣做
$('.TextBox1').on('keydown', function() {
var keyCode = e.keyCode || e.which;
if (keyCode == 40) {
e.preventDefault();
...
}
}
你有沒有將jquery更新為1.7?
從jQuery 1.7開始,不推薦使用.live()方法。
使用.on()附加事件處理程序:
$('.TextBox1').on('keydown', text_box_key_down_function);
你也可以使用bind:
$('.TextBox1').bind('keydown',text_box_key_down_function);
當JQ 1.9發布時,.live被刪除了,所以我猜你已經將Jquery更新到了最新版本。
現在,嘗試:
$('.TextBox1').on('keydown', function() {
var keyCode = e.keyCode || e.which;
if (keyCode == 40) {
e.preventDefault();
...
}
}
在JQ 1.9中刪除了.live,但現在有了同時運行.live和.on的解決方案
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script src="http://code.jquery.com/jquery-1.11.1.js"></script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.