如何创建一个仅有的'复选框菜单的按钮?

时间:2016-10-03 21:28:52

标签: jquery html

我正在尝试制作一个按钮'对于一个复选框菜单,它会取消选中除最近的复选框之外的所有内容(在每个菜单中)。 enter image description here

我有一些有用的代码,但它是一种黑客攻击,而我想在一行中说:

  • if $(this).closest(' .checkbox')。find('输入') {{ 1}} 然后取消选中,否则保持原样

此外,我需要在用户实际点击时触发事件(是checked)吗?



triggerHandler

$('.only').on('click', function() {

   $(this).closest('.checkbox').find('input').prop('checked', false);
   $(this).closest('.row').find('input').prop('checked', true);
   $(this).closest('.checkbox').find('input').prop('checked', false);
   $(this).closest('.row').find('input').trigger('click');
});

.only {
  border: 1px solid rgb(115, 135, 156);
  float: right;
  border: 1px;
  border-radius: 5px;
  padding-right: 7px;
  padding-left: 7px;
}




https://jsfiddle.net/2m0cu795/

3 个答案:

答案 0 :(得分:1)

您触发了错误的事件,请使用更改删除重复的行。 注意:如果您触发"请单击"它会改变价值,同时改变"没有。

$('.only').on('click', function() {
  $(this).closest('.checkbox').find('input[type="checkbox"]').prop('checked', false);
  $(this).closest('.row').find('input[type="checkbox"]').prop('checked', true).trigger('change');
});

或者,你不能改变当前的值,无论它的值是什么(唯一的):

$('.only').on('click', function() {
  var cb = $(this).closest('.checkbox').find('input[type="checkbox"]');
  var me = $(this).closest('.row').find('input[type="checkbox"]');
  cb.not(me).prop('checked', false);
  me.trigger('change');
});

或者在OTHER复选框上执行触发:(因为它们正在改变)

cb.not(me).prop('checked', false).trigger('change');

答案 1 :(得分:0)

点击:

  • 如果不是,请检查当前的那个。
  • 取消选中除当前以外的所有内容。

请参阅此jsfiddle:https://jsfiddle.net/4bjtuunr/5/

$('.only').on('click', function() {
    var $current = $(this).closest('.row').find('input');
    var $cbxs = $(this).closest('.checkbox').find('input');
    $current.prop('checked', true);
    $cbxs.not($current).prop('checked', false);
});

答案 2 :(得分:0)

如何使用它。这可以帮助您维护当前复选框的状态,而无需检查太多条件。

   var row = $(this).parents(".row");
   row.siblings().find('input').prop('checked', false);
   row.find('input').prop('checked', true);

https://jsfiddle.net/ydzbddd5/4/