jquery没有找到任何属性值

时间:2016-01-27 11:30:59

标签: jquery asp.net

在下面的代码中,我试图在单击复选框时更改隐藏字段的值(以便稍后从后面的代码访问)。但是,当我尝试使用下面的jquery获取值时,对于我尝试过的任何属性,我得到的都是'undefined'。我认为这意味着我没有设法找到我正在寻找的元素,所以没有要显示的属性。

关于我哪里出错的任何想法?我对jquery有一点经验,所以虽然不是一个完整的菜鸟,但我并不完全流利,所以我可能会发现一些非常明显的东西。

提前致谢。

HTML

    <asp:GridView ID="PROMQs" runat="server" ShowFooter="true" DataSourceID="PROMQDat" AutoGenerateColumns="false" OnRowDataBound="PROMQs_RowDataBound">
    <Columns>
        <asp:TemplateField HeaderText="Very Unsatisfied" HeaderStyle-CssClass="RegText Ans PROMHead">
            <ItemTemplate>
                <div id="Thang" class="Thang">
                    <asp:CheckBox ID="VUnsat" runat="server" Checked="true" />
                    <asp:HiddenField ID="Hiddenfield" runat="server" Value="toot" />
                <ajaxControlToolKit:MutuallyExclusiveCheckBoxExtender ID="mecb1" runat="server" TargetControlID="VUnsat" />
                </div>
            </ItemTemplate>
        </asp:TemplateField>
   </Columns>

和jquery

        $(document).ready(function () {
        $(this).click(function (event) {
            var el = event.target.id;
            var div_id = $(el).closest('div[id]').attr('id');
            var HF_id = $(el).closest('div[id]').find('.Thang').attr('value');
            alert(div_id);
            alert(test);
        });
    });

1 个答案:

答案 0 :(得分:1)

我想你需要改变:

$(el) 

$('#'+el)

event.target并不总是您认为的目标元素。这一行:

var HF_id = $(el).closest('div[id]').find('.Thang').attr('value');

绝对会返回undefined,因为Thang没有value属性。

我在点击复选框时尝试更改隐藏字段的值

要回答这个问题,我建议您在复选框上使用change事件:

$(document).ready(function() {
  $('input[type="checkbox"]').change(function(event) {
    var el = this; // is the checkbox
    var div_id = $(el).closest('div[id]').attr('id'); // returns "Thang"
    var HF_id = $(el).siblings('input[type="hidden"]').val(); // is the hidden input
    alert(div_id);
    alert(test);
  });
});