Как привязать к другому событию после вызова ajax в jquery - PullRequest
0 голосов
/ 27 февраля 2011

Я создаю график с использованием библиотеки flot javascript. Я включил кликабельное событие, и div привязан к заговору графика. Таким образом, когда щелкается точка данных, выполняется вызов ajax, и результат используется для замены текущего элемента div. После этого мне нужно привязать div к новому событию.

Я пытался вызвать bind, но он все еще привязан к старому обратному вызову. Когда я вызываю unbind и bind, новый обратный вызов не вызывается.

var handleTeacherClick = function( event, pos, item ) {
        if( typeof item != "undefined" && item ) { 
            var user_id = jQuery( 'input[name="id' + item.datapoint[0] + '"]' ).val();
            jQuery.ajax({
                type: 'POST',
                url: BASEPATH + 'index.php/ajax/home/latest',
                data: { "user_id": user_id },
                dataType: 'json',
                success: function ( result ) {
                    jQuery.plot(jQuery('#stats_prog'), 
                        result.progress_data, result.progress_options);
                    jQuery.plot(jQuery('#stats_perf'),
                        result.performance_data, result.performance_options);
                    jQuery('.stats_title').
                        html('<span class="stats_title">'+
                            ' >> Chapter '+Math.ceil(item.datapoint[0])+'</span>');
                        jQuery('#stats_prog')./*unbind("plotclick").*/
                            bind('plotclick', statClickHandler );
                        jQuery('#stats_perf')./*unbind("plotclick"). */
                            bind( 'plotclick', statClickHandler );
                },
            });
        }
    }

Ответы [ 3 ]

0 голосов
/ 27 февраля 2011

В вашем случае используйте live вместо обработчика событий связывания

0 голосов
/ 28 февраля 2011

Вместо того, чтобы просто вызывать unbind('plotclick'), явно включая функцию, которую вы хотите отменить (используя unbind('plotclick',functionVar)):

jQuery('#stats_prog').unbind("plotclick", handleTeacherClick).
                        bind('plotclick', statClickHandler );
0 голосов
/ 27 февраля 2011

Для новых элементов вы должны использовать либо live, либо delegate. Если вы используете плагин, вы должны использовать livequery.

...