通过类名获取ID的JQuery方法。

14

嗨,这是一个关于 jquery 的问题:

假设我有以下代码:

<input type="checkbox" class="select" id ="select-1">

<input type="checkbox" class="select" id ="select-2">

我希望当我点击提交按钮时,能够获取被选中的复选框的 id(注意:只能选择一个)。以下是我目前的按钮点击事件:

$("#submit").click(function(){

          if($(".select").is(':checked')){

              alert($(".select").attr('id'));
          }
});

即使我选择了具有“select-2” ID的复选框,它始终会警报“select-1”。 我猜想因为它们都在同一个类中,所以在警报中显示了找到的第一个带有“.select”类的元素..如何使用它们的类名获取特定的已选ID?谢谢!


2
你应该使用单选按钮。如果是从多个选项中选择一个,则使用单选按钮。如果是从多个选项中选择多个,则使用复选框。 - Rafael Herscovici
更新了我的回答,添加了演示。 - XCS
8个回答

45

你是只选中一个复选框吗?

alert( $(".select:checked").attr('id') );

或者,如果你同时选择了多个复选框:

$(".select:checked").each(function(){
   alert($(this).attr('id'));
});

演示:http://jsfiddle.net/UTux2/


3
使用以下方法获取ID
$(".select:checked").attr('id');

请记住,如果只能选择一个选项,最好将其更改为单选框(radio)


2

您并没有捕获已选中的复选框,您只是在询问“是否有一个被选中?”。

$("#submit").click(function(){

    var elem = $(".select:checked");

    if(elem.length > 0){
        alert(elem.attr('id'));
    }
});

2
$("#submit").click(function(){  
          if($(".select").is(':checked')){
               var $this=$(".select").is(':checked');
               alert($this.attr('id'));
          }
});

4
$(this) 指向 $('#submit'),因此这是不正确的。 - XCS

2

有多个元素。您需要检查所有具有相同类的复选框

$("#submit").click(function(){

          $(".select:checked").each(function(){
           alert($(this).attr('id'));
   });

});

2

在允许从多个选项中选择一个的情况下,您应该使用单选按钮而不是复选框。

<input type="radio" name="select" value="select-1">
<input type="radio" name="select" value="select-2">

那么事情将变得非常简单:
$("#submit").click(function(){

    alert($('[name="select"]:checked').val());
});

0
尝试像这样做,你不需要迭代。
        $(document).ready(function () {
            $("#submit").click(function(){
                  if($(".select").is(':checked')){
                      alert($(".select:checked").attr('id'));
                  }
            });
        });

-1
因为您没有迭代所有具有类“select”的元素。它总是转到第一个元素并打印结果。放置一个循环以迭代所有具有类“select”的元素。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接