我寫了一個很好的功能,包裝與遞增/遞減按鈕的輸入:JQuery的功能,包裝和現場結合
$.fn.qDecInc = function(){
return this.wrap('<span id="qButtons" />').after($('<span/>', { class: 'qIncButton' }).bind('click', function() {
var ov = 0;
if (isNaN($(this).val())){
ov = 0;
} else {
ov = $(this).val();
}
if (ov < 99){
var nv = parseFloat(ov) + 1;
$(this).val(nv);
$(this).keyup();
$(this).change();
}
}), $('<span/>', { class: 'qDecButton', style: 'top: 11px;' }).bind('click', function() {
var ov = 0;
if (isNaN($(this).val())){
ov = 0;
} else {
ov = $(this).val();
}
if (ov > 0){
var nv = parseFloat(ov) - 1;
$(this).val(nv);
$(this).keyup();
$(this).change();
}
}));
}
價值得到更新,但不投入。 我試過
$(this).live("change");
甚至
$("body").delegate($(this), "change");
無濟於事。 我錯過了什麼?
http://jsfiddle.net/MVxsA/1/ - 爲了您的方便,這裏有一個jsfiddle。
代碼樣本後,當你提到你已經嘗試了其他技術,你的意思是處理程序中?據我所知,要解決的第一個問題是點擊沒有被綁定。 http://jsfiddle.net/MVxsA/3/ - 除了舊式警報()調試不彈出,我實際上並沒有看到值得到更新。 –
謝謝。實際上,我使用.bind()來綁定事件,但在一秒之內就失去了我的想法,並在發佈之前將其更改回.live()。正如在小提琴中看到的,.bind()確實有效(並且改變了$(this).val()值),但是下面的改變和keyup事件不會被調用。 – khvn