JMeter is going to serve as your load/stress testing tool, but it is difficult to use it on web applications that contain a lot of client-side logic.
Selenium is a great functional testing tool for web applications that are heavy on the client-side logic, but it was not designed for load/stress testing.
Depending on your application, you can partition the various testing contexts across a variety of tools. If you need to test JavaScript performance explicitly, then a JavaScript profiler is generally the way to go. If you're testing the client-side business logic, then Selenium will be very helpful here. When you're testing the backend components (database access, middle-tier code, etc.), JMeter is going to be best here.
I tend to use all three tools in various capacities, since I maintain and test an ADF/JSF based application which is very heavy on client-side code. The gray areas are where JavaScript code reads something from the DOM and then submits to a URL. If the goal is to load test the URL in question, you can combine Selenium and JMeter in separate test runs: (1) for the functional testing (Selenium), and (2) by hardwiring the values (test data that would have been obtained from DOM/JS) in a JMeter request sampler.