Search code examples
internet-explorer-8jquery-1.4

jQuery's delegate conflict with another delegate in IE


It seems that in IE, some delegates may somehow cause another delegate to fail to work.

This is one possible case:

<html>
 <head>
  <script src='jquery-1.4.2.min.js'></script>
  <script>
   $(function() {
    $('#main')
    .delegate('div', 'click', function() {
     alert('on div!');
    })
    .delegate('[name=first]', 'change', function() {
     alert('first!');
    })
    .delegate('[name=second]', 'change', function() {
     alert('second!');
    })
    ;
   });
  </script>
 </head>
 <body>
  <div id="main">
   <input name="first" />
   <input name="second" type="checkbox" />
   <div>Test</div>
  </div>
 </body>
</html>

In this particular case, the handler for the checkbox won't fire.

As usual, the problem doesn't show up in other browsers.

Changing the call orders may solve an issue , but at the risk of causing another. Note that the delegate works on mutually exclusive elements so the order should be irrelevant.

What causes this?


Solution

  • It seems that the problem has been resolved in the latest version of jQuery or Internet-Explorer (as of this writing, 1.5 and 9, respectively).