【发布时间】:2011-10-03 04:18:54
【问题描述】:
我写了一个很好的函数来包装一个带有递增/递减按钮的输入:
$.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。
【问题讨论】:
-
当您提到您尝试过的其他技术时,您的代码示例之后,您的意思是在处理程序内部吗?据我所知,第一个要解决的问题是点击没有被绑定。 jsfiddle.net/MVxsA/3 - 除了老式的 alert() 调试没有弹出之外,我实际上也没有看到值得到更新。
-
谢谢。我实际上已经使用 .bind() 来绑定事件,但我有一瞬间失去了理智,并在发布之前将其更改回 .live() :)。如小提琴中所见, .bind() 确实有效(并更改了 $(this).val() 值),但不会调用以下更改和 keyup 事件。
标签: javascript jquery bind live