Side navigation
#5411 closed bug (invalid)
Opened October 27, 2009 04:30PM UTC
Closed October 27, 2010 10:21PM UTC
Cannot use prototype methods for event handler
| Reported by: | dinoboff | Owned by: | brandon |
|---|---|---|---|
| Priority: | low | Milestone: | 1.4 |
| Component: | event | Version: | 1.3.2 |
| Keywords: | Cc: | dinoboff@hotmail.com | |
| Blocked by: | Blocking: |
Description
Here is the test:
test("Use prototype method as event handler", function(){
var $elem = $('#swipeTarget'),
SomeConstructor = function($elem) {
$elem.bind('test', this, this.handler);
};
SomeConstructor.prototype = {
handler: function() {
var that = event.data;
ok(true, "Called.");}
};
expect(2);
obj1 = new SomeConstructor($elem);
obj2 = new SomeConstructor($elem);
$elem.trigger('test');
});
The test will fail. Only obj2.handler will be called.
jQuery tracks event handler (for unbind) by adding them an unique guid property, and only one guid / element / event can be registered. In this case obj1.handler and obj2.handler are the same function and share the same guid.
Attachments (0)
Change History (1)
Changed October 27, 2010 10:21PM UTC by comment:1
| priority: | major → low |
|---|---|
| resolution: | → invalid |
| status: | new → closed |
The test case contained incorrect code to achieve the desired result.
Correct:
http://jsfiddle.net/rwaldron/D2ECC/1/