Since I wrote the JQuery 5.0 implementation and have written some modules for DNN 4.9 that use JQuery, perhaps I can shed some light on this subject. The issue is definitely the result of a conflict between jQuery and the clientAPI but it is not an insurmountable problem as evidenced by fully funcitoning jQuery in DNN 5.0. The key to making jQuery play nice is to ensure that jQuery is registered on the page before any of the clientAPI scripts. You cannot rely on the standard RegisterClientScript functions in ASP.Net or in ClientAPI. Instead you need to roll your own.
For my Monitter module I used:
Private Sub RegisterScript(ByVal scriptName As String)
Dim scriptformat As String = "<script type=""text/javascript"" src=""{0}"" ></script>"
Dim headscript As New LiteralControl()"js/" + scriptName)
Page.Header.Controls.Add(headscript)End Sub
Then I can use a simple call like RegisterScript("jquery.min.js") and it will add the jQuery script to the "< Head >" section of the page. This has avoided all menu problems and jQuery still functions correctly in all my testing.
In DNN 5.0 we added an additional function so we can detect if jQuery is already registered so that we avoid multiple jQuery script references.
Private Shared Function IsScriptRegistered() As Boolean
Return CType(IIf(HttpContext.Current.Items("jquery_registered") IsNot Nothing, True, False), Boolean)
End Function
Then I just wrap the body of the RegisterScript method in a quick if...then and skip adding the script again if it is already registered (in case you haven't looked, this is very close to code used in the ASP.Net for managing script registration).
headscript.Text = [String].format(scriptformat, ModulePath +