Difference in works, if. If you use click(), you can add several fnfunctions, but if you use an attribute, only one function will be executed - the last one.
HTML
<span id="JQueryClick">Click #JQuery</span> </br> <span id="JQueryAttrClick">Click #Attr</span> </br> JSJavaScript
$('#JQueryClick').click(function(){alert('1')}) $('#JQueryClick').click(function(){alert('2')}) $('#JQueryAttrClick').attr('onClick'," alert('1')" ) //thisThis doesntdoesn't work $('#JQueryAttrClick').attr('onClick'," alert('2')" ) If we are talking about performance, in any case directly using is always faster, but using of an attribute, you will be able to assign only one function.