我有一个页面可以使用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>
答案 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。