C# 在jQueryUI选项卡中的动态加载用户控件中使用Javascript

C# 在jQueryUI选项卡中的动态加载用户控件中使用Javascript,c#,jquery,asp.net-mvc,user-controls,jquery-ui-tabs,C#,Jquery,Asp.net Mvc,User Controls,Jquery Ui Tabs,我需要在UserControl中插入一些JavaScript代码,我通过jQueryUI选项卡从Ajax调用加载这些代码。让我解释一下 这是我的视图(已加载jQuery) 这是用户控件 <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %> Number... <span id="testSpan"><%=Model.ToString() %></span>!!

我需要在UserControl中插入一些JavaScript代码,我通过jQueryUI选项卡从Ajax调用加载这些代码。让我解释一下

这是我的视图(已加载jQuery)

这是用户控件

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
Number... <span id="testSpan"><%=Model.ToString() %></span>!! 
<input type="button" value="Click me!!" onclick="message();" />
<script type="text/javascript">
function message(item) {
    alert($("#testSpan").html());
}
</script>

数字!!
功能信息(项目){
警报($(“#testSpan”).html();
}
问题是message()函数总是返回1(而不是返回正确的数字)


我的问题是。。。我应该如何将脚本添加到我的UserControl中以使代码正确运行?

我只是在这里猜测

我猜您的问题是,当加载选项卡时,即使您打开另一个选项卡,它也会保持在DOM中(即,如果默认值为#1,则即使您单击第二个选项卡,它也会保持加载状态)

如果发生这种情况,当您调用消息函数时,将有多个id为“testSpan”的元素,jQuery选择器$(“#testSpan”)将返回第一个元素

我想这只是一些测试代码,但对于这种特殊情况,我会将作为参数添加到javascript函数中

同样,我只是猜测jquery ui tabs()函数的行为


请尝试添加这样的脚本

<script type="text/javascript" defer="defer">
function message(item) {
    alert($("#testSpan").html());
}
</script>

功能消息(项目){
警报($(“#testSpan”).html();
}

这可能是一个解决方案,但我以不同的(更干净的IMHO)方式解决了问题。现在,我清空上一个选项卡的内容,这样ID总是唯一的。非常感谢。
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
Number... <span id="testSpan"><%=Model.ToString() %></span>!! 
<input type="button" value="Click me!!" onclick="message();" />
<script type="text/javascript">
function message(item) {
    alert($("#testSpan").html());
}
</script>
<script type="text/javascript" defer="defer">
function message(item) {
    alert($("#testSpan").html());
}
</script>