我正在尝试使用deferreds来处理特定的应用程序。我不确定我是否离开这里,我的策略是错误的,或者我只是忽略了一些基本的东西。
我们说我有一些委派的on
事件:
jQuery('#my-element').on('change', 'select,input', Myclass.change);
基本上,我所追求的(或类似的东西)将是:
jQuery('#my-element').on('change', 'select,input', Myclass.change)
.then(Myclass.next)
.done(Myclass.done);
如何将这些延迟方法添加到我的基本委派事件中?
答案 0 :(得分:1)
尝试使用$.Callbacks("once"); Myclass.next
,Myclass.done
应该被称为"一次"
var callbacks = $.Callbacks("once");
var Myclass = {
"change" : function(e) {
// do stuff within `Myclass.change`
console.log(e.target.value, "change");
// call `$.when()` with desired argument, e.g.,
// with `e.target.value` ,
// passed to `Myclass.next` , `Myclass.done`
// Note, `.then()` can return different `promise` value
// `.done()` returns original `promise` value
callbacks.add(function() {
return $.when(e.target.value).then(Myclass.next).done(Myclass.done)
}).fire();
}
, "next" : function(value) {
console.log(value, "next");
return value
}
, "done" : function(value) {
console.log(value, "done");
}
};
jQuery('#my-element').on('change', 'select,input', Myclass.change);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<div id="my-element">
<input type="text" />
</div>
&#13;