【问题标题】:JQuery .prop function not working to uncheck boxJQuery .prop 功能无法取消选中复选框
【发布时间】:2013-03-20 08:14:27
【问题描述】:

我尝试了许多在此处找到的想法,以在选中另一个复选框时取消选中一个复选框,但没有一个有效...

现在我有:

$("#chkBox1").click(function () {
 if ($(this).is(":checked")) {
  $('#chkBox2').prop('checked', false); }
});

..但没有结果,chkBox2 仍处于选中状态

这是 HTML 中的一个复选框:

<input type="checkbox" name="art" id="chkBox1" data-mini="true" data-theme="c" />

我的代码中一个可能的区别是复选框仅在单击按钮时添加到页面中,使用 href...复选框在 HTML 中(不是在 Javascript 中创建的)..但直到 a单击按钮..这可能是问题的一部分吗?还是我错过了其他东西?另外,我正在使用 JQuery Mobile。

【问题讨论】:

  • 在 JQM 中为复选框使用 ID 可能是个坏主意(由于 JQM 中处理页面缓存的方式,在 JQM 中使用 ID 通常不是很安全)。很可能没有选择正确的元素。
  • 您可以将$(this).is(":checked") 更改为$(this).prop("checked") 甚至this.checked。它会更直接,但不应该影响结果。
  • @KevinB 哦,是的.. 没注意到它是 jqm - api.jquerymobile.com/pageinit

标签: javascript jquery html jquery-mobile checkbox


【解决方案1】:

您需要在更改其'.prop 后刷新它,使用.checkboxradio('refresh')

Demo

// Check #chkBox2 by default
$('#chkBox2').prop('checked', true).checkboxradio('refresh')

// Uncheck #chkBox2 when #chkBox1 is checked
$('#chkBox1').on('click', function () {
 if ($(this).is(':checked')) {
  $('#chkBox2').prop('checked', false).checkboxradio('refresh');
 }
});

【讨论】:

【解决方案2】:

对不起,我应该继续阅读!

这似乎可以解决问题:

  $('#chkBox1').checkboxradio('refresh');

..但我不确定为什么,这是 JQuery Mobile 独有的吗?

【讨论】:

【解决方案3】:

HTML

<input type="checkbox" name="art" id="chkBox1" data-mini="true" data-theme="c" />
<input type="checkbox" name="art2" id="chkBox2" data-mini="true" data-theme="c" checked="checked" />

jQuery:

(function ($) {
$(document).ready(function () {
    $("#chkBox1").click(function () {
        if ($(this).is(":checked")) {
            $('#chkBox2').prop('checked', false);
        }
    });
});
})(jQuery);

这里的工作示例http://jsfiddle.net/SwmN6/75/

【讨论】:

    【解决方案4】:

    您正在检查this,并更改chkBox2

    if ($(this).is(":checked")) {
         $('#chkBox2').prop('checked', false); }
    

    试试这个:

    if ($('#chkBox2').is(":checked")) {
         $('#chkBox2').prop('checked', false); }
    

    或者简单地说:

    $('#chkBox2').prop('checked', false);
    

    【讨论】:

    • 这其实是指#chkbox1
    猜你喜欢
    • 1970-01-01
    • 2011-10-10
    • 2016-06-06
    • 2015-01-15
    • 2021-02-12
    • 2015-10-07
    • 2016-05-26
    • 1970-01-01
    • 2015-10-29
    相关资源
    最近更新 更多