2015-12-15 2 views
3

У меня есть сценарий, в котором каждый столбец в таблице имеет флажок, если флажок установлен, столбец скрыт. Это отлично работает, если я физически с помощью мыши проверю флажок. Тем не менее, я пытаюсь выполнить check/uncheck весь скрипт, и, хотя это, похоже, делает то, что его предполагается делать, то есть в браузере я вижу, что все флажки столбца отмечены и не отмечены, но столбцы не скрываются. Они только скрываются, если я вручную сниму флажок.снимите отметку с помощью скрипта и снимите флажок с помощью мыши.

Вот код отвечает за скрытие столбцов

$('input:checkbox').change(function(){ 
    var ColToHide = $(this).attr("name");  
    if(this.checked){ 
     $("td[class='" + ColToHide + "']").show();   
    }else{ 
     $("td[class='" + ColToHide + "']").hide(); 
    } 

    $('div#Debug').text("hiding " + ColToHide); 
}); 

Вот чек/снимите весь каталог скрипт

HTML-

<p><label><input type="checkbox" id="checkAll"/> Check all</label></p> 

В JQuery

$("#checkAll").change(function() { 
    $("input:checkbox").prop('checked', $(this).prop("checked")); 
}); 

ответ

0

Событие change не срабатывает при программном программировании checked. Чтобы обойти эту проблему вы можете поднять событие вручную, как это:

$("#checkAll").change(function() { 
    $("input:checkbox").prop('checked', $(this).prop("checked")).change(); 
}); 

Также обратите внимание, что вы можете сократить логику в вашем change() обработчика с помощью toggle:

$('input:checkbox').change(function() { 
    $("td[class='" + this.name + "']").toggle(this.checked); 
}); 
+0

благодаря Рори .. к сожалению, этот вопрос остается. Событие смены не запускается, даже если в браузере не отображаются флажки. – user3436467

+0

на всякий случай, когда я тестировал в firefox, chrome и IE и те же результаты. – user3436467

+0

Не могли бы вы добавить HTML-таблицу вашей таблицы (или хотя бы небольшой образец) на ваш вопрос. –

Смежные вопросы