如何获取用户刚刚使用jQuery检查过的复选框的id?

时间:2012-03-05 23:29:43

标签: c# jquery asp.net

我有一个asp.net转发器,它将memberid绑定到jquery mobile的fieldcontain中包含的复选框的id。

<div data-role="fieldcontain" style="margin: 0px">
    <fieldset data-role="controlgroup">
        <asp:Repeater ID="rpt" runat="server">
            <ItemTemplate>
                <input type="checkbox" name="chkBox"
                    id="<%# DataBinder.Eval(Container.DataItem, "[MemberId]").ToString() %>"
                    class="custom" /><label for="<%# DataBinder.Eval(Container.DataItem, "[MemberId]").ToString() %>"><%# DataBinder.Eval(Container.DataItem, "[LastName]").ToString() %>,
                        <%# DataBinder.Eval(Container.DataItem, "[FirstName]").ToString() %></label>                            
            </ItemTemplate>
        </asp:Repeater>
    </fieldset>
</div>

我有这个jQuery函数:

$('input:checkbox[name=chkBox]').change(function () {            
            var id = $(this).attr('id');
            //var isChecked = $(this).attr('checked');   
            var isChecked = $('#'+id).is(':checked');      
});   

如何获取刚刚点击的复选框的ID,并告知用户是否由于点击操作而选中或取消选中该复选框?当前代码将循环遍历所有复选框。由于某种原因,click()不会被捕获,所以我使用change()。

谢谢,

4 个答案:

答案 0 :(得分:0)

var isChecked = $(this).is(':checked');
var id = $(this).attr('id');

答案 1 :(得分:0)

将click事件(或更改)绑定到元素将触发回调函数,其上下文(this关键字)等于作为事件目标的元素(即,单击任何一个复选框)。我正在使用jQuery 1.7,并且click事件对我来说在复选框上运行正常。

我建议使用一个类来区分要监视的复选框而不是名称,因为类已针对jQuery选择引擎中的选择进行了优化。

$(':checkbox.im_special').click(function () {
  var $this = $(this);
  var id = $this.attr('id');
  var checked = $this.is(':checked');
})

答案 2 :(得分:0)

$('input:checkbox[name=chkBox]').click(function () {
    if ($(this).is(':checked'))
       alert($(this).attr('id'));
});

这将在选中输入时提醒已选中的复选框,而不是取消选中。如果您需要将已触发事件更改为“更改”,请执行此操作。但是我发现它在IE中表现不如“点击”对于跨浏览器的兼容性。不确定它在jquery mobile中的表现,抱歉。

答案 3 :(得分:0)

叹了口气,我对所有复选框都有相同的名称,这就是为什么它遍历所有复选框的原因。我给每个复选框命名了一个不同的名字,现在可以使用了