监视复选框的更改,但仅由用户而不是代码进行。 jQuery的

时间:2018-03-18 16:45:55

标签: jquery html5 twitter-bootstrap

注意:我考虑过使用.click(),但不确定这是否足够好。 UI中的更改会驱动不同的UI元素。 我有一个复选框,根据不同的状态可能会变为真或假。

该复选框反映服务器中的数据结构。它是在一个观察几种类似物体的群体中。当用户选择不同类型的对象时,状态在ui中发生变化。包含的复选框。

因此,根据服务器的状态,我有时需要更改复选框。

我需要通知服务器有关复选框更改的信息,但前提是用户切换它。不是当用户选择了不同的对象时,ui更改了复选框(以反映状态) 我想过使用.change()但无论是什么驱使改变都会被解雇。 该复选框实际上是一个bootstrap切换。 请问.click()是否足够?或者有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

没有看到代码,很难确定地说出任何话。但是,click()应该足以满足您的描述。只要点击鼠标或键盘,就会调用处理程序"点击"发生在那个复选框/元素上。当您更新UI时,我不知道您是如何更改复选框的,假设您正在更改DOM或直接修改checked属性,那么您应该没问题。

这是一个简单的演示:

https://jsfiddle.net/j0oeLwh9/

$(document).ready(function() {

  $('.checkbox1').click(function() {
    $('.log').append('<p>click</p>');
  });

  // This causes the `input` click listener to fire
  $('.button1').click(function() {
    $('input').click();
  });

  // This will not fire the `input` click listener
  $('.button2').click(function() {
    var checkbox = document.getElementsByClassName('checkbox1')[0];
    checkbox.checked = !checkbox.checked;
  });

});

<div>
  <p><label><input type="checkbox" class="checkbox1" />Click Me</label></p>
  <p>Try clicking anywhere in the white area, then using the keybard tab key to focus the checkbox</p>
  <p><button class="button1">Fires Listener</button></p>
  <p><button class="button2">Does Not Fire Listener</button></p>
</div>

<div class="log"></div>