Skip to main content

Can you bind two events to a handler with jQuery?



(By the way, a quick experiment indicates that the answer is "yes", but it might be "it doesn't work in every browser".)





I am using a validator plugin that binds something to the submit event of a form. But I want to perform additional validation. It would seem that I can simply bind my additional validation to the submit event.





HOWEVER, I worry that that might not work on every browser. Should I expect this to work or will I need to write more complex code?


Comments

  1. "It would seem that I can simply bind my additional validation to the submit event... I worry that that might not work on every browser."


    If you're using jQuery to bind the handlers, they ensure cross browser compatibility.

    The event system is largely their own construct. They actually only bind one generic handler to a given element. Your actual handlers are stored in jQuery.cache, and the generic handler invokes them.

    One thing to keep in mind is that if the other handlers are not bound using jQuery, you may not be able to ensure the order in which the handlers are invoked.

    ReplyDelete
  2. okay as bind may solve your problem initially it may create more in the future. Look up the "on()" method for jQuery, and you can do as much as you want inside that event callback.
    And the simple answer is 'yes'!

    ReplyDelete

Post a Comment

Popular posts from this blog

Why is this Javascript much *slower* than its jQuery equivalent?

I have a HTML list of about 500 items and a "filter" box above it. I started by using jQuery to filter the list when I typed a letter (timing code added later): $('#filter').keyup( function() { var jqStart = (new Date).getTime(); var search = $(this).val().toLowerCase(); var $list = $('ul.ablist > li'); $list.each( function() { if ( $(this).text().toLowerCase().indexOf(search) === -1 ) $(this).hide(); else $(this).show(); } ); console.log('Time: ' + ((new Date).getTime() - jqStart)); } ); However, there was a couple of seconds delay after typing each letter (particularly the first letter). So I thought it may be slightly quicker if I used plain Javascript (I read recently that jQuery's each function is particularly slow). Here's my JS equivalent: document.getElementById('filter').addEventListener( 'keyup', function () { var jsStart = (new Date).getTime()...