html keyup事件,jquery keyup事件为什么不执行?
先指出你的一個錯誤點
$('#skillKey').on('click', 'tr', function () {
$(this).css('color','red');
$(this).keyup(function(){
alert(123)
});
});
你這樣綁定事件,結果是點擊一次tr綁定一次,點了多少次就綁定了多少次,這個例子還是不明顯,你在tr里放置一個input,然后編寫如下代碼,看看效果如何
$('#skillKey').on('click', 'input', function () {
$(this).css('color','red');
$(this).blur(function(){
alert(123)
});
});
再給個建議
需要使用的元素可以先緩存,不要濫用$,易讀的前提下可以使用鏈式
$('#skillKey').on('click', 'tr', function () {
var $this = $(this);
$this
.css('color', 'red')
.keyup(function () {
alert(123)
});
});
再來解答你的問題
不觸發keyup事件,是因為鍵盤事件需要元素獲取焦點,tr獲取不到焦點當然觸發不了。再者如果你要點擊修改文本內容不應該是彈出一個input么?
$(this).keyup(alert(123)); 你把alert的前后內容都去掉不就是alert(123),函數加上”()“就會執行的
補充
你所說的效果不可控性太強,輸入不可見也就不支持復制粘貼了。我推薦下面這種方式,你看下適不適用你的情景
HTML
姓名年齡
小于12老李20JS
$('#skillKey')
.on('click', 'tbody td', function () {
var $this = $(this);
var text = $this.text();
var $input = $('');
$input.on('blur', function () {
$this.text($input.val());
$input = null;
});
$this.html($input);
$input.focus().val(text);
})
.on('click', 'input', function (e) {
e.stopPropagation();
});
效果
函數執行問題
函數后面加上“()”就會執行,例如
$(this).keyup(alert(123));
這里執行keyup函數,先要解析參數,發現參數是alert(123),肯定立馬先彈出123,然后繼續往下解析。例如
function fn(){
alert(4);
}
fn(alert(3));
別把函數的引用和執行弄混了,好好理解下。
總結
以上是生活随笔為你收集整理的html keyup事件,jquery keyup事件为什么不执行?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql+ubunt+绿色安装_Mys
- 下一篇: winCE改变字库方法