2015-08-14 3 views
1

Я пытаюсь подсчитать, сколько раз на моем флажке были установлены флажки, флажки используются для фильтров (для мужчин, женщин, возраста и т. Д.). На данный момент у меня есть этот кодCount щелкнул флажки, даже после обновления

jQuery('[id^="checkbox"] input').each(
    function (index, element) { 
     jQuery(this).click(
      function() { 
       console.debug("Hello"); 
      } 
     ); 
    } 
); 

засчитывается (в консоли), сколько раз флажок был щелчок (с идентификатором, начиная с флажком), а потому, что страница обновляет информацию (и URL) с каждым щелчком, он будет считать только первый клик, а остальные не будут учитываться. Можно ли продолжить подсчет после обновления страницы? Thanks

+0

Что вы хотите сделать с помощью счетчика посещений? Ответ зависит от этого –

+0

Чтобы зарегистрировать информацию. существует ~ 15 различных флажков (все, что начинается с идентификатора «checkbox»). Информация будет записана. В настоящее время я тестирую ответы, чтобы узнать, работают ли они. – angie

+0

Если вы хотите регистрировать клики для себя (а не для пользователей) , вы можете отправить запрос ajax на ваш сервер при щелчке по галочке и подсчитать количество кликов на сервере. Но вы должны убедиться, что страница будет перезагружена после вызова ajax или она (ajax-вызов) будет прервана. –

ответ

4

Чтобы иметь постоянное количество всех флажков, проверяемых всеми пользователями, вам необходимо иметь центральную общую сумму, которую все рассчитывают на обновление. Это будет довольно сложно для даже крупных сайтов, таких как YouTube, которые все еще борются с этим (хотя и в меньшей степени).

Я не знаю, что это может быть выполнено исключительно в JS (если кто-нибудь знает, пожалуйста, отредактируйте этот ответ), и вам, скорее всего, понадобится какой-то внешний код.

Один подход можно взять бы:

  1. обновление местный общий проверяемых флажков по щелчку
  2. установить таймер 1/2 секунды по щелчку
  3. один раз по истечении заданного времени, Написать Ajax запрос на серверной страницу
  4. фоновой страница получает обновление, обновление центральной общей

Есть много Кете r подходит вам. Вероятно, вы столкнетесь с такими проблемами, как, например, центральная сумма может быть не очень точной (если запросы ajax прерываются), а использование полосы пропускания увеличивается из-за запросов ajax.


Gennady Dogaev поделился действительно хороший код, который сообщений Идентификатор флажком и его значение на другую страницу. На этой странице, скорее всего, будет логика для обновления базы данных или чего-то похожего на отслеживание того, какие флажки используются.

<body> 
    <input type="checkbox" id="check_1" /> 1 
    <input type="checkbox" id="check_2" /> 2 
    <input type="checkbox" id="check_3" /> 3 
</body> 


$(function(){ 
    $("input[type=checkbox]").click(function(){ 
     var box = $(this); 
     var data = { 
      id: box.prop('id'), 
      checked: box.is(':checked') 
     }; 
     $.get('https://stackoverflow.com/', data).always(function(response){ 
      console.log('server responded', response); 
      /*Click registered, do what you want here*/ 
     }); 
    }); 
}); 

https://jsfiddle.net/nrLpxLuf/


Ниже ответ должен был помочь рассчитывать все отмеченные флажками на странице и обновить в общей сложности на месте. Я оставил его здесь для справки.

Вам не нужно перебирать все элементы, чтобы прикрепить к ним одно событие щелчка.

Вместо этого добавьте событие click в коллекцию флажков, а затем обновите полную переменную из функции щелчка.

var $inputs = $('[id^="checkbox"] input'); 
var total = $inputs.filter(':checked').length; //this will be 0 if none are found 

$inputs.on('click', function(event) { 
    if($(this).is(':checked')) { 
    total++; 
    } else { 
    total--; 
    } 

    console.log(total); 
}); 

Если вы хотите только посмотреть, было ли оно нажато, просто добавьте к общей сумме.

+0

Спасибо за ваш ответ, но где эта информация может быть Вы получили – angie

+0

. Я обновил свой ответ. Нам нужно немного больше информации, чтобы помочь вам. – evolutionxbox

+0

Общее количество будет доступно всем пользователям, цель которых - посмотреть, какие флажки нажимают на большее количество, которые игнорируются и т. д. – angie

0

Вам нужно установить значение для загрузки, если вы хотите подсчитать отметку после обновления.

var total = 0; 
$(document).ready(function (event) { 
    //onload count for the checked checkboxes and set total value 
    total = $('[id^="checkbox"] input:checked').length; 
    $('[id^="checkbox"] input').on('click', function (event) { 
     $(this).prop('checked') ? total++ :total--; 
    }); 
}); 
Смежные вопросы