【问题标题】:ASP.NET <form runat=server> breaks jQueryASP.NET <form runat=server> 打破了 jQuery
【发布时间】:2012-10-20 22:04:57
【问题描述】:

简而言之,当 ASP.NET 页面具有&lt;form runat=server&gt; 标记时,它似乎破坏了一些 jQuery 脚本。这是一个例子:

我有一个非常简单的页面,只有一个复选框,如下所示:

<input type="checkbox" id="myCheckbox01" />

以及像这样调用 jQuery 函数:

<script language=javascript>
    $(document).ready(function () {
        $("[type=checkbox]").iphoneStyle();
    });
</script>

请注意,我没有专门引用任何 ID。 jQuery 调用适用于页面中的所有复选框。

这工作正常,jQuery 调用按预期工作。但是……

当我将复选框附在 ASP.NET 表单中时,如下所示:

<form runat="server" id="form1">
    <input type="checkbox" id="myCheckbox01" />
</form>

jQuery 调用停止工作,我收到 JavaScript 错误 “对象不支持属性或方法 'iphoneStyle'”

再次请注意,我没有引用任何特定的 ID,复选框也不是 ASP.NET (runat=server) 控件——它只是一个普通的旧复选框。

我似乎无法找到这个问题。任何帮助将不胜感激。

【问题讨论】:

  • 您是否尝试查看选择器是否正常工作? console.log($("[type=checkbox]"));
  • 是的,选择器正在工作。不过,我使用不同的方法对此进行了测试。我将呼叫更改为$("[type=checkbox]").hide();,复选框按预期隐藏。
  • 即使您的选择器工作正常,我建议将其更改为 $('[type="checkbox"]'). 从性能的角度来看,如果您不直接选择 ID,则使用容器会很好。类似$('#form1 input[type="checkbox"]').
  • 谢谢,@Johan。我按照您的建议更改了代码。但是,行为仍然相同。
  • 您是否检查过 firebug/chrome 开发人员工具中的 net 选项卡并验证 iphoneStyle() 的脚本已正确加载?

标签: javascript jquery asp.net


【解决方案1】:

我遇到了这个问题。 jQuery 本身可以工作,但我添加的任何插件都不会。我不断收到“对象不支持属性或方法......”的投诉。解决方案是将对 jQuery 插件的引用从 Site.Master aspx 页面移动到我使用 jQuery 插件的“主”页面。我认为将所有脚本引用都放在 Site.Master 中很聪明,但毕竟我太聪明了。

【讨论】:

    【解决方案2】:

    像这样更改您的脚本。它对我有用

      <script language="javascript">
          $(document).ready(function () {
          $('input:checkbox').iphoneStyle();
          });
      </script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-20
      • 1970-01-01
      • 2012-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多