<p>I've currently got multiple select's on a page that are added dynamically with <code>ajax</code> calls using jquery.</p>

<p>The problem I've had is I could not get the change event to work on the added select unless I use the <code>onchange</code> inside the tag e.g. </p>

<pre><code>&lt;select id="Size" size="1" onchange="onChange(this);"&gt;
</code></pre>

<p>This works, but I'm wondering if there's a way to get it to be assigned by jquery. I've tried using <code>$('select').change(onChange($(this));</code> in the usual place of <code>$(document).ready</code> but that didn't work.</p>

<p>I've tried adding the event with bind after the ajax call but that did not work either.</p>

<p>Any better way to assign the event?</p>

$('select').change(onChange($(this));
You need to understand the difference between calling a function and passing it around as an object.  Functions are first-class objects in JavaScript, they are an object just like anything else, so they can be stored in variables, passed as arguments to other functions, and so on.
The code as you have it calls the onChange function, and gives the result to jQuery's change function.  You don't want that.  The idea is to pass
the function itself
to jQuery's change function, and jQuery calls it when it is appropriate to do so.
When you have parentheses - () - after a function's name, then you are calling it.  Otherwise, you are treating it as an object.  So what you
intend
to do can be accomplished like this:
```
```
$('select').change(onChange);
```
```