1

如何<asp:multiview>使用 jquery 或 javascript 访问 html 元素?

假设我有多视图的结构:

<div runat="server" class="tabContents" style="height:100%; width:100%;">
    <asp:MultiView id="MultiView1" ActiveViewIndex="0" Runat="server">
        <asp:View ID="v1" runat="server" >
            <iframe id="f1" runat="server" style="border: None; height: 100%; width: 100%;"></iframe>
        </asp:View>        
        <asp:View ID="v2" runat="server" >
            <iframe id="f2" runat="server" style="border: None; height: 100%; width: 100%;"></iframe>
        </asp:View>
        <asp:View ID="v3" runat="server" >
            <iframe id="f3" runat="server" style="border: None; height: 100%; width: 100%;"></iframe>
        </asp:View>
        <asp:View ID="v4" runat="server" >
            <iframe id="f4" runat="server" style="border: None; height: 100%; width: 100%;"></iframe>
        </asp:View>
        <asp:View ID="v5" runat="server" >
            <iframe id="f5" runat="server" style="border: None; height: 100%; width: 100%;"></iframe>
        </asp:View>
        <asp:View ID="v6" runat="server" >
            <iframe id="f6" runat="server" style="border: None; height: 100%; width: 100%;"></iframe>
        </asp:View>        
        <asp:View ID="v7" runat="server" >
            <iframe id="f7" runat="server" style="border: None; height: 100%; width: 100%;"></iframe>
        </asp:View>
        <asp:View ID="v8" runat="server" >
            <iframe id="f8" runat="server" style="border: None; height: 100%; width: 100%;"></iframe>
        </asp:View>
        <asp:View ID="v9" runat="server" >
            <iframe id="f9" runat="server" style="border: None; height: 100%; width: 100%;"></iframe>
        </asp:View>
        <asp:View ID="v10" runat="server" >
            <iframe id="f10" runat="server" style="border: None; height: 100%; width: 100%;"></iframe>
        </asp:View>
    </asp:MultiView>
</div>

我在后面的代码中尝试了这段代码:

 string s;
        s =
            "<script>" +
            "$('#f" + index++ + "').src(" + "'" + url + "'" + ");" + 
            "</script>";
        Page.ClientScript.RegisterStartupScript(this.GetType(), "ExeCuteScript", s);

但它不起作用。

请帮我解决一下这个。谢谢!

4

2 回答 2

1

我以前从未使用multiviews过,但如果f1可以从您后面的代码中访问,那么您jquery可以很简单:

$('#<%= f1.ClientID %>')
于 2013-06-05T08:34:25.030 回答
0

如果您查看页面的渲染标记,您会发现您尝试访问的元素的 ID 与您分配的不同。这是因为 ASP.NET 为runat="server"元素生成唯一的 ID。

但是,您会注意到 ID 的最后是您在 XAML 中指定的实际 ID。您可以使用 jQuery "endswith" 选择器来做到这一点,如下所示:

String.Format("$('[id$=f{0}]').src('{1}');", index++, url);

所以你的代码块变成:

string s;
s = "<script>" +
    String.Format("$('[id$=f{0}]').src('{1}');", index++, url) + 
    "</script>";
    Page.ClientScript.RegisterStartupScript(this.GetType(), "ExeCuteScript", s);

或者,如果您没有在代码隐藏中使用 iframe,只需将runat="server"其删除即可。

于 2013-06-05T07:22:44.960 回答