1

我在gridview中有一个面板。当我单击网格视图中的单选按钮时,我调用click单选按钮的 jquery 事件。那部分工作正常......现在我需要引用我的gridview内的面板,但我不能使用$this,因为它指的是我的单选按钮列表(我认为它确实如此)。

我怎样才能得到这个面板的参考。

            $("#MainContent_gvLineItems input[id*='rbAnswer']").click(function () {
                var p = $(this).find('[id$=MainContent_gvLineItems_pnlAnswer]'); // find the panel but this wont work so what can I do here?
            });

我不知道我的语法是否适合id$=MainContent_gvLineItems_pnlAnswer网格视图中每一行的面板 ID 更改...

编辑

这是一些网格视图:

<asp:TemplateField HeaderText="Answer">
                            <ItemTemplate>
                               <div id="dMainAnswer">
                                <asp:RadioButtonList ToolTip="Please provide an answer to the method." RepeatDirection="Horizontal" ID="rbAnswer" runat="server" SelectedValue='<%# DataBinder.Eval(Container, "DataItem.AnswerID")%>'>
                                    <asp:ListItem Text="Yes" Value="Yes" style="color:green;"></asp:ListItem>
                                    <asp:ListItem Text="No" Value="No" style="color:red;"></asp:ListItem>
                                    <asp:ListItem Text="N/A" Value="N/A" style="color:gray;"></asp:ListItem>
                                    <asp:ListItem Value="" Text="" style="display: none" />
                                </asp:RadioButtonList>
                                   <asp:Panel ID="pnlAnswer" runat="server" Visible="False">
                                       <div id="dMainAnswerResponsibleType">
                                            <asp:RadioButtonList ID="rbRespType" ToolTip="Select responsible contact type." runat="server" RepeatDirection="Horizontal" AutoPostBack="true" SelectedValue='<%# DataBinder.Eval(Container, "DataItem.ResponsiblePartyType")%>' OnSelectedIndexChanged="rbRespType_SelectedIndexChanged">
                                                <asp:ListItem Selected="True" Text="TKSE" Value="TKSE">TKSE</asp:ListItem>
                                                <asp:ListItem Text="Other" Value="Other">Other</asp:ListItem>
                                                <asp:ListItem Value="" Text="" style="display: none" />
                                            </asp:RadioButtonList>
                                        </div>
                                        <div id="dMainAnswerResponsible"><a href="#" onclick="return false;" class="info">Res:<span>Select who is responsible in resolving this issue.</span></a>
                                             <asp:DropDownList ID="ddlEmployees" runat="server" 
                                                DataSource="<%# GetEmployees() %>" SelectedValue='<%# Eval("TKSEContact") %>' DataTextField="FullName" Width="75px"
                                                DataValueField="FullName" 
                                                ToolTip="Select the TKSE responsible party.">
                                            </asp:DropDownList>
                                            <asp:TextBox ID="txtContact" Text='<%# Eval("ResponsiblePartyContact") %>' Width="75px" MaxLength="50" runat="server" ToolTip="Enter the responsible contact name." Visible="false"></asp:TextBox>
                                        </div>
                                        <div id="dDueDate"><a href="#" onclick="return false;" class="info">Due:<span>Select the due date when you expect this issue to be resolved.</span></a>
                                            <asp:TextBox ID="txtDueDate" Text='<%# Eval("DueDate") %>' Width="59px" runat="server" ToolTip="Select the due date." CssClass="datePickerDueDate"></asp:TextBox>
                                        </div>
                                        <div id="cSendToSugar">
                                            <asp:CheckBox ID="chkSendToSugar" ToolTip="Send/Update issue to Sugar?" BackColor="Gold" Text="Send To Sugar?" Checked="true" runat="server" />
                                        </div>
                                   </asp:Panel>
                               </div>
                            </ItemTemplate>
                                <FooterStyle HorizontalAlign="Center" />
                                <HeaderStyle HorizontalAlign="Center" />
                                <ItemStyle HorizontalAlign="Center" />
                            </asp:TemplateField>

注意面板pnlAnswer,它最初设置为不可见Visible=False。它也不是单选按钮列表的兄弟……至少我不认为它是……

4

2 回答 2

3

使用 .parents 查找元素的父级;如果你给它一个 CSS 类,你可以这样做:

$(this).parents(".class:first")

找到它。我假设面板是单选按钮列表的父级。否则,您会想使用另一种 Jquery 方法。只要面板可见或使用以下命令隐藏,这将起作用:

<asp:Panel .. style="display:none" />
于 2012-08-23T16:17:43.613 回答
1

我建议给你的面板一个 css 类,然后使用 jQuery 选择器。如果单选按钮是面板的兄弟:

var panel = $(this).siblings(".answer");

这取决于面板在生成的标记中的位置,也许可以使用 next 或 prev 代​​替。如果您发布生成的标记,我可以更新此答案。


现在我们可以看到标记(谢谢)您需要父级,然后是兄弟级,如下所示:

 <someOtherElement> <!-- the grid view container -->
    <div class="answer"></div> <!-- sibling of parent (maybe <div runat="server"> is better than panel?)  -->
    <div> <!-- parent -->
        <input type="radio">  <!-- this -->
    </div>
 </someOtherElement>
于 2012-08-23T16:19:13.197 回答