如何使用jQuery和AJAX处理多个复选框更改事件?

时间:2019-07-04 16:59:55

标签: php jquery ajax checkbox

我有多个使用PHP生成的复选框,当使用jQuery中的AJAX更改复选框的值时,我正在尝试更新每个项目

<input type="checkbox" name="visible" id="visible" data-id="<?= $item['id'] ?>" <?= $item['visible']? 'checked' : ''; ?>>
(document).ready(function() {
  $('#visible').change(function() {
    $.post('../ajax/carousel.php',
      {
        'id'     : $('#visible').attr('data-id'),
        'visible' : $('#visible').is(':checked') ? 1 : 0
      },
      function(data, status) {
        alert(data);
      });
  });
});

现在我只想在更改时获得每个复选框,而不是一次全部获得!

发生的事情是,它仅获取复选框的第一个值,而不获取其余的

1 个答案:

答案 0 :(得分:0)

具有多个具有相同ID的元素是无效的HTML,而jQuery仅选择带有$(this)的第一个元素。 See this thread for more info
将选择器替换为HTML中的类,并使用Javascript中的<input type="checkbox" class="visible-cb" data-id="<?= $item['id'] ?>" <?= $item['visible']? 'checked' : ''; ?>> 访问唯一项。

$('.visible-cb').change(function() {
    $.post('../ajax/carousel.php',
      {
        'id'     : $(this).data('id'),
        'visible' : $(this).is(':checked') ? 1 : 0
      },
      function(data, status) {
        alert(data);
      });
  });
- (BOOL)application:(UIApplication *)application 
didFinishLaunchingWithOptions:(NSDictionary<UIApplicationLaunchOptionsKey, id> *)launchOptions;