Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 确定asp:占位符是否可见Jquery_Javascript_Jquery_Asp.net_Html - Fatal编程技术网

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的专家,因此需要代表我进行一些试验,才能最终回答您的评论,而且现在正在工作中-但是,我一点也不介意这样做,如果您愿意的话