Javascript 确定asp:占位符是否可见Jquery
我有一个程序,有两个Javascript 确定asp:占位符是否可见Jquery,javascript,jquery,asp.net,html,Javascript,Jquery,Asp.net,Html,我有一个程序,有两个asp:Placeholders和runat=“server”。一次只能看到一个。我想通过javasacript和jquery来确定哪个是on。我试过几个命令,但没有一个奏效。到目前为止,我已经尝试过(这些都在if语句中: if ($'#showClosest').visible) if ($'#showClosest').style.visibility) if ($'#showClosest').css.visible) if ($'#showClosest').css.
asp:Placeholder
s和runat=“server”
。一次只能看到一个。我想通过javasacript和jquery来确定哪个是on。我试过几个命令,但没有一个奏效。到目前为止,我已经尝试过(这些都在if
语句中:
if ($'#showClosest').visible)
if ($'#showClosest').style.visibility)
if ($'#showClosest').css.visible)
if ($'#showClosest').css.visibility)
即使在占位符可见的情况下,它们都没有工作/返回true
是否有方法确定占位符是否可见
我需要通过占位符来实现这一点。我从页面加载中获得的信息将决定什么是可见的,什么是不可见的
编辑:
以下是占位符:
<asp:PlaceHolder ID = "showClosest" runat = "server">
<asp:PlaceHolder ID = "showSelectedInformation" runat = "server">
OK-Javascript和jQuery不会直接与ASP.NET占位符
控件一起工作。这是因为此类控件仅限于服务器端,不会直接呈现给客户端,而是仅呈现其中的内容或覆盖它,因此:
<asp:PlaceHolder runat="server" ID="myPlaceHolder">
???????????
</asp:PlaceHolder>
因此,您在jQuery($“#占位符”
)中使用的标识符不在这里,因为它不标识任何内容。因此,简短的回答如下:
if ($'#showClosest').is(':visible'))
alert("<%= this.VisiblePlaceHolderID %>");
您无法使用jQuery直接确定占位符是否为
您可能想对@Tom的答案产生某种程度的兴趣,他似乎已经提供了一个脚本/客户端解决方案,尽管他冒险离开了以j
;)开头的语言。好的-Javascript和jQuery不会直接与ASP.NET占位符
控件一起工作。这是因为此类控件仅限于服务器端,并且不会直接呈现给客户端,而是仅呈现其内部或覆盖的内容,因此:
<asp:PlaceHolder runat="server" ID="myPlaceHolder">
???????????
</asp:PlaceHolder>
空间,等等。因此,您在jQuery中使用的标识符($“#占位符”
)不在这里,因为它不标识任何内容。因此,简短的回答如下:
if ($'#showClosest').is(':visible'))
alert("<%= this.VisiblePlaceHolderID %>");
您无法使用jQuery直接确定占位符是否为
您可能想对@Tom的答案产生某种程度的兴趣,他似乎提供了一个脚本/客户端解决方案,尽管他大胆地放弃了以j
开头的语言。) 最简单的方法是在页面生成时执行。在您的ASPX页面上有以下Javascript:
<head>
<script type="text/javascript">
var IsVisible = <%=PlaceHolderVisibility%>;
</script>
</head>
反正是这样的。请注意,Javascript和ASP/c的进程bools在不同的情况下略有不同,因此请注意这一点
然后,当您想知道面板是否可见时,只需调用IsVisible变量
如果使用纯Jquery而没有上述任何一种解决方案,这将很困难,因为占位符实际上不会向DOM呈现任何内容。您需要在其中呈现一个元素作为标志,但是当它不存在/找不到时,以及当它存在时,您必须处理实例。可能很难管理。最简单的方法是在页面生成时执行。在您的ASPX页面上有以下Javascript:
<head>
<script type="text/javascript">
var IsVisible = <%=PlaceHolderVisibility%>;
</script>
</head>
反正是这样的。请注意,Javascript和ASP/c的进程bools在不同的情况下略有不同,因此请注意这一点
然后,当您想知道面板是否可见时,只需调用IsVisible变量
如果使用纯Jquery而没有上述任何一种解决方案,这将很困难,因为占位符实际上不会向DOM呈现任何内容。您需要在其中呈现一个元素作为标志,但是当它不存在/找不到时,以及当它存在时,您必须处理实例。可能很难管理。你试过这个吗
if(jQuery(“#showmestest”).is(“:visible”){
您试过这个吗
if(jQuery(“#showmestest”).is(“:visible”){
在回答您对@Mr.des失望的问题时,如果您在占位符中添加div,则可以检查它。只有占位符可见时,它才会出现在页面标记中
<asp:PlaceHolder runat="server" ID="myPlaceHolder">
<div id="foo"></div>
</asp:PlaceHolder>
在回答您对@Mr.失望的问题时,如果您在占位符中添加div,您可以检查它。只有当占位符可见时,它才会出现在页面标记中
<asp:PlaceHolder runat="server" ID="myPlaceHolder">
<div id="foo"></div>
</asp:PlaceHolder>
与给出的一些答案相比,答案可能非常简单
从这里开始:
<asp:PlaceHolder ID = "showClosest" runat = "server">
<asp:PlaceHolder ID = "showSelectedInformation" runat = "server">
与给出的一些答案相比,答案可能非常简单
从这里开始:
<asp:PlaceHolder ID = "showClosest" runat = "server">
<asp:PlaceHolder ID = "showSelectedInformation" runat = "server">
根据@Tom Gullen严厉否决的答案,如果您的要求是确定页面上的占位符中哪些是可见的,并且一次只能有一个可见占位符,那么您可以使用属性返回可见占位符的ID:
public string VisiblePlaceHolderID
{
get
{
return this.Controls.OfType<PlaceHolder>().FirstOrDefault(p => p.Visible == true).ClientID;
}
}
根据@Tom Gullen严厉否决的答案,如果您的要求是确定页面上的占位符中哪些是可见的,并且一次只能有一个可见占位符,那么您可以使用属性返回可见占位符的ID:
public string VisiblePlaceHolderID
{
get
{
return this.Controls.OfType<PlaceHolder>().FirstOrDefault(p => p.Visible == true).ClientID;
}
}
请向我们显示相应的标记。占位符不会被呈现为这样,是不是#placeHolder
您在接管占位符的类型上声明的特定标记?总体而言,数据不足。对此表示抱歉。我对其进行了编辑以显示更多代码。希望这有助于向我们显示相应的标记。占位符不会被显示这样呈现,#placeHolder
是您在接管占位符的类型上声明的特定标记吗?总体而言,数据不足。对此表示抱歉。我编辑了它以显示更多代码。希望这会有所帮助。是的,我开始有这种感觉。有解决方法吗?假设我在占位符中有一个div,有办法吗ld尝试获取该id并确定以这种方式可见的内容(if($('#foo').visible)或类似的方式)?或者,当占位符不可见时,我会遇到问题吗?因为div不存在?我不是jQuery的专家,因此需要代表我进行一些试验,才能最终回答您的评论,而且现在正在工作中-但是,我一点也不介意这样做,如果您愿意的话