Получить идентификатор флажка? - jQuery

Эй, мне интересно, как получить идентификатор флажка, когда он установлен.

Это то, что мой HTML, вероятно, будет выглядеть сначала:

<div class="check_filter">

    <div id="filter">
        <input type="checkbox" id="check1" /><label for="check1">Marketing</label>
        <input type="checkbox" id="check2" /><label for="check2">Automotive</label>
        <input type="checkbox" id="check3" /><label for="check3">Sports</label>
    </div>

</div><!-- End check_filter -->

Я предполагаю, что jQuery будет выглядеть примерно так:

$(document).ready(function() {    
    $(":checkbox").click(function(){
        var id = $(this).attr('id');

        $.post("index.php", { id: id });
       //return false to ensure the page doesn't refresh
       return false;
    });    
});

Я пытаюсь получить идентификатор проверенного элемента и затем отправить этот идентификатор в запросе mysql, чтобы захватить результаты идентификатора из базы данных.

Спасибо за любую помощь в этом.

Ответы

Ответ 1

Вы, вероятно, хотите здесь change, например:

$(function() {
  $(":checkbox").change(function(){
    $.post("index.php", { id: this.id, checked: this.checked });
  });    
});

Это сообщение, когда изменяется флажок, и позволяет стороне PHP знать идентификатор и проверяется ли он. Нет.

Ответ 2

JQuery, который вы предоставили, отлично работает? Вероятно, вы должны удалить return false, чтобы показать, что флажок установлен.

EDIT: $. post() для асинхронного запроса (метод AJAX), поэтому обновление страницы не будет.

РЕДАКТИРОВАТЬ 2: Вы также можете посмотреть, установлен ли флажок (а не только его нажатие):

$(document).ready(function() {    
  $(":checkbox").click(function(){
        var id = $(this).attr('id');
        var isChecked = $(this).attr('checked'));
        $.post("index.php", { id: id, isChecked: isChecked });
    });    
});

Ответ 3

Вы можете использовать селектор :checkbox, а затем проверить id и проверенные свойства элемента DOM следующим образом:

var id = $(this).find(":checkbox")[0].id; var isChecked = $(this).find(":checkbox")[0].checked;

Ответ 4

Вы можете лучше использовать jQuery get вместо post. Он позволяет обрабатывать выходные данные вашего запроса: http://api.jquery.com/jQuery.get/

Пример:

$(document).ready(function() {    
  $(':checkbox').click(function(){
        var id = $(this).attr('id');
        var isChecked = $(this).attr('checked'));
        $.get(
          'getcheckbox.php', 
          { id: id, isChecked: isChecked },
          function(data) {
            //return value in getcheckbox.php and use it in on complete function
            var result = data;
          }
        );
    });    
});

Ответ 5

Зачем мне это нужно только для имени флажка, но $(this), чтобы получить доступ к значению

$('input:checkbox').change( function() {
        console.log("here i am: " + this.name + " value = " + $(this).val() );
        }
    );