Yii, почему многие операторы jquery теряют свою эффективность после вызова Ajax, включая следующую новую проблему с select all в ChckBoxList: - PullRequest
0 голосов
/ 26 февраля 2012

Это происходило со мной много раз, мне удалось исправить большинство из них, но здесь снова другая проблема:

При использовании Checkboxlist есть флажок select all после операции ajax, который при нажатии перестает выбирать все остальные флажки, как это и предполагалось. Так как мне его обновить?

<?php
        $filterList = array(
            'first' => 'first option',
            'second' => 'second option',
            'third' => 'third option',

        );
        $htmlOptions = array(
            'checkAll'=>'Select All',
            'separator' => ' ',
            'template' => '{input}&nbsp;{label}<br/>'
//            'template' => '<tr><td >{label}</td><td>{input}</td></tr>'
        );
        echo CHtml::checkBoxList('filters', array('1'), $filterList, $htmlOptions)
        ?>

Ниже приводится сгенерированный Jquery

jQuery('#filters_all').click(function() {
    jQuery("input[name='filters\[\]']").attr('checked', this.checked);
});
jQuery("input[name='filters\[\]']").click(function() {
    jQuery('#filters_all').attr('checked', !jQuery("input[name='filters\[\]']:not(:checked)").length);
});
jQuery('#filters_all').attr('checked', !jQuery("input[name='filters\[\]']:not(:checked)").length);

1 Ответ

1 голос
/ 26 февраля 2012

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

Либо донне заменяйте элемент как часть вызова AJAX или используйте функции .on() (jQuery 1.7+) или .delegate() (до jQuery 1.7) для назначения событияобработчик элемента, который не будет заменен, например:

$('body').on('click', 'selector', function(e) {
    // select all checkboxes here
});

или

$('body').delegate('selector', 'click', function(e) {
    // select all checkboxes here
});
...