jquery bind функции и триггеры после вызова ajax - PullRequest
0 голосов
/ 14 октября 2011
function bindALLFunctions() {
  ..all triggers functions related go here
};


$.ajax({
        type: 'POST',
        url: myURL,
        data: { thisParamIdNo: thisIdNo },
        success:    function(data){
                        $(".incContainer").html(data);
                        bindALLFunctions();
        },
        dataType: 'html'
});

Я новичок в ajax и JQuery. У меня есть вышеупомянутый вызов ajax в моем коде js-jquery. bindALLFunctions (); используется для повторного вызова всех триггеров и функций после вызова ajax. Все работает хорошо и хорошо, как и ожидалось. Однако я где-то читал, что лучше что-то загрузить после завершения начального действия, поэтому я попытался добавить / отредактировать следующие два без какого-либо успеха. Есть идеи?

1) ->    $(".incContainer").html(data, function(){
                                          bindALLFunctions(); 
                                        });

2) ->    $(".incContainer").html(data).bindALLFunctions();

Ответы [ 3 ]

1 голос
/ 14 октября 2011

Возможно, вам стоит взглянуть на функции live и делегат . Вы можете установить уникальный обработчик событий в начале вашего приложения, и весь ваш загруженный код Ajax будет автоматически связан:

$("table").delegate("td", "hover", function(){
    $(this).toggleClass("hover");
});

Но если вы предпочитаете использовать вызов Jquery.ajax, вы должны сделать что-то вроде этого:

$.ajax({
        type: 'POST',
        url: myURL,
        data: { thisParamIdNo: thisIdNo },
        success:    function(data){
                        $(".incContainer").html(data);
                        bindALLFunctions(".incContainer");
        },
        dataType: 'html'
});

и преобразование bindALLFunctions как:

function bindALLFunctions(selector) {
  ..all triggers functions related go here. Example:
  $('#foo', selector).bind('click', function() {
     alert('User clicked on "foo."');
  });
};

, который будет связывать только события «под» указанным селектором.

0 голосов
/ 14 октября 2011

Трудно сказать по вашему вопросу, что вы намереваетесь задать, но я предполагаю, что вы хотите знать о функции ready . Это позволит вам вызвать ваши bindALLFunctions после того, как документ станет доступен; просто сделай $(document).ready(bindALLFunctions) или $(document).ready(function() { bindALLFunctions(); }).

0 голосов
/ 14 октября 2011

Ваш исходный код был в порядке. Новая версия не работает, потому что функция html () не имеет функции обратного вызова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...