Mik*_*den 4 jquery prototypejs
我试图使用jQuery将click事件绑定到某个元素.使用原型我知道我可以使用BindAsEventListener().
例:
var myObject = {
init: function(txtOneId, txtTwoId, lblResultId, ancAddId) {
this.txtOneId = txtOneId;
this.txtTwoId = txtTwoId;
this.lblResultId = lblResultId;
this.ancAddId = ancAddId;
var addListener = this.addResult.bindAsEventListener(this);
Event.observe(this.txtOneId, 'keyup', addListener);
Event.observe(this.txtTwoId, 'keyup', addListener);
},
addResult: function() {
var valueOne = $(this.txtOneId).value;
var valueTwo = $(this.txtTwoId).value;
if (isNaN(valueOne) || valueOne == "")
valueOne = 0;
else
valueOne = parseInt(valueOne);
if (isNaN(valueTwo) || valueTwo == "")
valueTwo = 0;
else
valueTwo = parseInt(valueTwo);
var result = valueOne + valueTwo;
$(this.lblResultId).innerHTML = result;
return false;
}};
Run Code Online (Sandbox Code Playgroud)
我假设您仍在使用原型,并且添加了jQuery没有冲突,因此$()是一个原型方法,$ j()是一个jQuery方法.
快速回答
您只需要对init方法进行更改.
init: function(txtOneId, txtTwoId, lblResultId, ancAddId) {
this.txtOneId = txtOneId;
this.txtTwoId = txtTwoId;
this.lblResultId = lblResultId;
this.ancAddId = ancAddId;
var handler = function(event){ event.data.addResult(event) };
$j(this.txtOneId).bind('keyup', this, handler);
$j(this.txtTwoId).bind('keyup', this, handler);
}
Run Code Online (Sandbox Code Playgroud)
说明
使用Prototype,您使用了bindAsEventListener函数,以便在收到事件时此引用可用.
对于jQuery,您可以使用以下语法(来自jquery api)使用bind方法传递此事件数据:
.bind( eventType [, eventData], handler(eventObject) );
Run Code Online (Sandbox Code Playgroud)
应用于您的代码,使用匿名函数,这解析为:
$j(this.txtOneId).bind('keyup', this, function(event){ event.data.addResult(event) });
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我们将'keyup'事件绑定到文本元素,将此引用作为eventData传递,然后在handler函数中我们使用event.data引用eventData(this)来执行this.addResult(event)方法.
| 归档时间: |
|
| 查看次数: |
4212 次 |
| 最近记录: |