Я использовал их в сменной системе, где сменный DLLs мог быть загружен/разгружен во времени выполнения. Я искал бы известные символы в каждом DLL и бросил бы их к указателям функции.
Это легко сделать, перевернув текущее «отмеченное» состояние флажок при каждом нажатии. Примеры:
$(".offer").on("click", function () {
var $checkbox = $(this).find(':checkbox');
$checkbox.attr('checked', !$checkbox.attr('checked'));
});
или:
$(".offer").on("click", function () {
var $checkbox = $(this).find(':checkbox');
$checkbox.attr('checked', !$checkbox.is(':checked'));
});
или, напрямую управляя свойством DOM 'checked' (т.е. не используя attr ()
для выборки текущего состояния установленного флажка) :
$(".offer").on("click", function () {
var $checkbox = $(this).find(':checkbox');
$checkbox.attr('checked', !$checkbox[0].checked);
});
... и т. Д.
Примечание: начиная с jQuery 1.6, флажки следует устанавливать с помощью prop
, а не attr
:
$(".offer").on("click", function () {
var $checkbox = $(this).find(':checkbox');
$checkbox.prop('checked', !$checkbox[0].checked);
});
$('.offer').click(function() {
$(':checkbox', this).each(function() {
this.checked = !this.checked;
});
});
В JQuery я не думаю, что click () принимает две функции для переключения. Для этого вам следует использовать функцию toggle (): http://docs.jquery.com/Events/toggle
$('.offer').click(function(){
if ($(this).find(':checkbox').is(':checked'))
{
$(this).find(':checkbox').attr('checked', false);
}else{
$(this).find(':checkbox').attr('checked', true);
}
});
Вы можете использовать функцию toggle
:
$('.offer').toggle(function() {
$(this).find(':checkbox').attr('checked', true);
}, function() {
$(this).find(':checkbox').attr('checked', false);
});
попробуйте изменить это:
$(this).find(':checkbox').attr('checked', true );
на это:
$(this).find(':checkbox').attr('checked', 'checked');
Не уверен на 100%, что это поможет, но я, кажется, припоминаю, что у меня была аналогичная проблема. Удачи!