Bug Tracker

Opened 5 years ago

Closed 4 years ago

Last modified 4 years ago

#9901 closed bug (fixed)

event.handleObj.namespace incorrect when using .delegate

Reported by: salohcinzero@… Owned by: dmethvin
Priority: low Milestone: 1.7
Component: event Version: 1.6.2
Keywords: Cc:
Blocked by: Blocking:

Description

Affected versions: 1.4.4 and 1.6.2 (likely all other versions with .delegate) Browser: FF 5 Operating system: Win7 64-bit Repro steps: 1) I created a reduced example at: http://jsfiddle.net/TTp8w/3/ 2) Click both links 3) Inspect console log statements which show observed and expected behavior

Description: When i use delegate to bind namespaced event handlers, i need to use the namespace of the handler. This is stored in event.handleObj.namespace, but when using .delegate, this value seems to get garbled with the selector string.

Example: $("#container").delegate(".test1", "click.test1", function(e) { console.log(e.handlerObj.namespace) }); Expected log statement: 'test1' Observed log statement: '`test1.click.test1'

Change History (3)

comment:1 Changed 5 years ago by anonymous

Updated jsFiddle link http://jsfiddle.net/TTp8w/4/

There are now 3 links: 1 bound with .delegate 1 bound with .live 1 bound with .bind

.bind behaves as expected, but both .delegate and .live do not.

comment:2 Changed 5 years ago by dmethvin

  • Component changed from unfiled to event
  • Milestone changed from None to 1.7
  • Owner set to dmethvin
  • Priority changed from undecided to low
  • Status changed from new to assigned

Confirmed. In the changes I'm doing for 1.7, this is fixed as a result of categorizing delegated events under the actual event name, rather than "live". Note to self: need QUnit test for this.

Last edited 5 years ago by dmethvin (previous) (diff)

comment:3 Changed 4 years ago by Dave Methvin

  • Resolution set to fixed
  • Status changed from assigned to closed

Fix #9901, verified by this unit test.

Changeset: 63c9719330668f0165da1390e3aa53d4011aa0c2

Note: See TracTickets for help on using tickets.