2012-03-08 6 views
0

Я просто хочу вызвать функцию, когда форма загружается через ajax. Мой текущий код выглядит следующим образом:Jquery Live Load - Загрузить форму через ajax

$('form').live("load",function() {...} 

Моего Аякс вызов выглядит следующим образом:

jQuery.ajax({ 

       type: "get", 
       url: "../design_form.php", 
       data: "coll=App_Forms&form=Step_1_Company_Sign_Up", 
       dataType: "html", 
       success: function(html){     
          jQuery('#Right_Content').hide().html(html).fadeIn(1000); 

       } 

     }) 

Я знаю, что я мог бы поставить на мой звонок в части успеха вызова AJAX, но я пытаюсь свести к минимуму код и повторное использование других кодов, поэтому я бы очень хотел использовать функцию live.

Я загружаю форму через ajax, и когда эта форма загружена, я хочу вызвать функцию, используя jquery live. Это прекрасно работает, когда я установить его на «кнопку»

$('form').live("click",function() {...} 

но ненужно запускать эту функцию на каждый клик, я просто нужно один раз запустить на форме нагрузки так, поэтому я хочу использовать загрузчик не клик.

спасибо.

+0

Звоните .die внутри .live, поэтому он будет отключаться после выполнения один раз. Вы должны использовать .on если вы используете jQuery 1.7. –

+0

Нет функции «загрузки» для жизни, единственный способ сделать это через обратный вызов успеха. –

+0

Можете ли вы ответить на вопрос в пространстве ответов ниже этого пути, я могу дать вам зеленый галочку. Также, если бы вы могли привести пример того, где я должен поставить .die, я был бы очень благодарен. Благодарю. – user982853

ответ

0

Edit: Я думаю, что вы хотите иметь собственный код внутри успеха обратного вызова которые будут использоваться на разных страницах, поэтому вы не хотите дублировать один и тот же вызов ajax на разных страницах. Если это так, то вы должны вызвать функцию внутри этого обратного вызова и реализовать другую версию этого на другой странице.

jQuery.ajax({ 
      type: "get", 
      url: "../design_form.php", 
      data: "coll=App_Forms&form=Step_1_Company_Sign_Up", 
      dataType: "html", 
      success: function(html){     
        jQuery('#Right_Content').hide().html(html).fadeIn(1000); 
        afterFormLoad(); //Implement this function 
      } 

    }); 

    function afterFormLoad() { } //dummy function defined in the common code 

И в вашей конкретной странице,

function afterFormLoad() { 
     //this is from page 1 
    } 

Ниже только показывает вам о .live/.die и .one упаковывают, если вы хотите, чтобы понять, как отвязать его с помощью .die.

Вы можете отвязать .live внутри обработчика щелчка, используя .die,

DEMO

$('form').live("click",function(e) { 
    alert('clicked'); 
    $('form').die('click'); // This removes the .live() functionality 
}); 

Вы можете использовать .one если вы используете JQuery 1.7.Смотрите ниже код,

DEMO

$(document).one('click', 'form', function() { 
    alert('clicked'); 
}); 
+0

Это не то, что требуется OP – Andre

1

Нет никакой загрузки для запуска с jquery live, попробуйте прочитать документацию по API. http://api.jquery.com/live/

С другой стороны, вы можете использовать плагин под названием «livequery» и вызвать что-то вроде этого:

$(selector).livequery(function(){ 

}); 

Как вы можете видеть, нет щелчка в этом плагине вместо JQuery жить ,

Надеется, что это помогает :-)

0

Вы можете рассмотреть нагрузки() метод, который является способом удобство $ .ajax

http://api.jquery.com/load/

var data= "coll=App_Forms&form=Step_1_Company_Sign_Up" 
jQuery('#Right_Content').hide().load("../design_form.php", data,function(){ 
      /* this is the success callback of $.ajax*/      
      jQuery(this).fadeIn(1000); 
}); 
1

Существует не событие dom insert.

Хотя в JavaScript вы можете вызвать ничего

success: function(html){     
    jQuery('#Right_Content').hide().html(html).fadeIn(1000) 
    .trigger('ajax-load'); 
} 

Тогда вы можете слушать события, используя

jQuery('#Right_Content').on('ajax-load', callback); 

Инициирование событие вручную может быть полезным для использования в нескольких страницах, но если вам нужно использовать его для всего приложения, вам будет лучше использовать плагин, такой как предоставленный Oscar Jara