Это действительно сложная проблема, насколько я знаю (и я не знаю, насколько) изменение флажка с кнопки не вызовет событие изменения, но, поскольку вы используете функцию, вы можете просто измените атрибут, затем запустите функцию перерисовки. Я также изменил .click () на .change () только для эффекта:
Из кода Flot я добавил класс к каждому элементу и установил для этого класса событие изменения:
choiceContainer.append('<br/><input type="checkbox" name="'
+ key+'" checked="checked" id="id' + key + '" class="legend">' +
'<label for="id' + key + '">' + val.label + '</label>');
$(".legend").change(plotAccordingToChoices);
Теперь для вашей кнопки, я сделал это, чтобы переключить США:
$("#clicker").click( function(){
if($("#idusa").is(":checked"))
$("#idusa").attr('checked', false);
else
$("#idusa").attr('checked',true)
plotAccordingToChoices();
});
EDIT:
Вы можете использовать .trigger ('change'), чтобы вызвать событие change.
$("#clicker").click( function(){
if($("#idusa").is(":checked"))
$("#idusa").attr('checked', false);
else
$("#idusa").attr('checked',true)
$("#idusa").trigger('change');
});
Наконец я изменил кнопку на кнопку:
<button id="clicker">Disable USA</button>
Вы могли бы немного изменить это и иметь кнопку для каждого флажка, если хотите.
Я надеюсь, что это работает для вас.