runat =“server”打破了我的jquery / css功能

时间:2011-05-24 00:24:03

标签: jquery css runatserver

我有一个页面可以使用JQuery更改页面上的媒体,如图片或PDF,这样每次点击用户都不需要页面刷新/新数据库访问。

我有一个DIV容器,可以容纳所有这些活动。它工作,看起来很棒!当我将runat =“server”添加到DIV标记时,我所有的好行为都会中断。这没有编写任何代码来操纵对象服务器端。出于某种原因,我的样式/行为无法正确应用。

我猜有些事情很简单,但我已经厌倦了猜测。我希望有人在这里知道为什么会发生这种情况?

编辑:这是针对ASP.Net应用程序的。

  <div id="slidingContent" runat="server" >
    <div class="item" id="media3" name="media3">
       My media here.
    </div>
  </div>

4 个答案:

答案 0 :(得分:8)

我假设你在.net应用程序的上下文中有这个。如果是这样,您应该在问题的某处指定。 runat="server"会破坏id;查看浏览器中的HTML源代码以确切了解它的作用。您需要向标记添加类并修改CSS和JavaScript以使用类而不是ID。

答案 1 :(得分:7)

正如其他人所提到的,如果你正在使用ASP.NET,那么如果你有runat =&#34; server&#34;它就会修改你的ID。要解决此问题,请在JS中使用:

document.getElementByID("<%=slidingContent.ClientID%>");

$("#<%=slidingContent.ClientID%>");

答案 2 :(得分:2)

在呈现的页面上执行视图源。 asp.net可能已经改变了id =“slidingContent”。

答案 3 :(得分:0)

我不知道您是否使用主页/内容页面,但如果是这样,我发现有效的方法是为您的主页/内容页面提供ID。

如果您只是使用其中一个,并假设您向Master页面提供ID为“Mstr”而内容页面为ID“Cont”,则可以创建如下所示的JavaScript前缀:

var masterPrefix = "Mstr_",
    contentPrefix = "Cont_";

然后,您可以创建一个名为$getElement()的函数,它允许您传递您在标记中提供的ID,如下所示:

function $getElement(id) {
    return $("#" + masterPrefix + contentPrefix + id);
}

然后,根据您的具体示例,您可以通过执行以下操作获取runat =“server”div的jQuery对象:

var $slidingContent = $getElement("slidingContent");

当你进入拥有大量客户端脚本的大型项目时,我发现这种方法可以节省生命。

或者,如果您不想调用其他函数来返回对象,则可以始终执行此操作:

var $slidingContent = $('div[id$="slidingContent"]');

这里你只是说给我一个ID以“slidingContent”结尾的div。