【问题标题】:Getting a specific id using jquery使用 jquery 获取特定的 id
【发布时间】:2016-06-20 11:45:00
【问题描述】:

我有一个类似的代码:

<div class="answer_id" value="1" name="false">
  <input id="AsnwerAnswer1" type="checkbox" value="1" name="true"></input>
  Answer 1
</div>

我有 4 个类似于上面代码的答案,唯一改变的是我的 div 中的值和输入 id。

当我点击一个复选框时,选中的复选框的值是 true :

$("input:checkbox").click(function() {
     var thisChecked = $(this)[0].checked;
        $("input:checkbox").removeAttr('checked');
        $("input:checkbox").attr('name', 'false');
        $(this).attr('name', 'true');
        $(this)[0].checked = thisChecked ? true : false;
 });

当我点击按钮发送答案时:

$('#sendReponse').click(function(){

我想获取包含选中复选框的 div 的值(其值为 true 的那个)。

我应该添加什么:

var iReponseId = $(this).closest('.answer_id').attr('value');

顺便说一句,如果您能帮助我了解点击功能的作用,那就太好了。 据我说,这会删除所有选中的属性,因此我只能选择一个复选框,这会将每个复选框的名称设置为 false 期望选中的那个,但我不明白这一点:

 $(this)[0].checked = thisChecked ? true : false; 

编辑:

我这样做是为了得到我想要的:

    $("input:checkbox").click(function() {
        $("input:checkbox").not(this).prop('checked',false).removeAttr('class', 'chosen_answer');
        $(this).attr('class', 'chosen_answer');
    });

然后

 $('#sendReponse').click(function(){
 var iReponseId = $('.chosen_answer').closest('.answer_id').attr('value');

【问题讨论】:

  • $(this)[0].checked; === this.checked;
  • $(this)[0].checked = thisChecked ? true : false; 是在删除选中的属性后回滚到您以前的状态....您可以将其减少 this.checked = thisChecked
  • 当单选按钮为此而发明时,为什么所有这些代码?

标签: javascript jquery html checkbox


【解决方案1】:

在您的代码中$(this)[0].checked = thisChecked ? true : false; 有助于在删除选中的属性后回滚您之前的选中属性状态,它可以减少为this.checked = thisChecked


您可以按如下方式减少整个代码

// use change event always for chekbox
$("input:checkbox").change(function() {
    // get all checkbox
    $("input:checkbox")
         .not(this) // ignore the clicked checkbox
         .prop('checked',false) // uncheck the checkbox 
         .attr('name', 'false'); // set the attribute
    $(this).attr('name', 'true'); // set name of clicked 
});

要获取包含输入的 div,您需要使用 answer_id 类而不是 response_id

var iReponseId = $(this).closest('.answer_id').attr('value');

仅供参考:使用自定义属性时,请始终使用标准data-* 格式。

【讨论】:

  • 在我的代码中这是响应,我刚刚翻译了它,所以目前我的代码和你一样,问题是这部分代码不在点击函数中,这是在如果我点击按钮发送答案。我不能让这两个一起工作,因为如果用户点击答案 A,然后是 B,然后是 A 等等。我的 ajax 需要几个小时才能工作。
  • @JulienS : 只允许用户在 ajax 成功后点击
  • 我不能那样做,如果你有其他的探索方式也很好。问题是我有一个调查,当有人点击一个答案时,我必须保留这个信息,所以当这个人通过点击带有一些 ajax 的“发送答案”来确认他的选择时,它会返回结果。
  • 你说他们是什么意思?答案?只有一个答案可能,这就是为什么当用户检查另一个答案时我取消选中所有答案。
  • @JulienS : 你每次更改都调用 ajax 吗?
猜你喜欢
  • 2020-09-05
  • 2010-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-22
  • 1970-01-01
相关资源
最近更新 更多