.submit не работает после .load
<script> $(function(){ $('.setfilter').submit(function(e){ e.preventDefault(); var m_method=$(this).attr('method'); var m_action=$(this).attr('action'); var m_data=$(this).serialize(); $.ajax({ type: m_method, url: '/sys/user/ajax/set-filter.php', data: m_data, success: function(result){ $('#setgruz').fadeOut('slow'); $('#settransport').fadeOut('slow'); $("#globalfilterdiv").load("/user/<?=$user_id?> #global-filter"); } }); }); }); </script> Данный кусок не работает после перезагрузки кода через .load Кнопки через .on работают , а это - нет В чем проблема ? |
Цитата:
После .load на странице появляются новые элементы, у которых не установлено никаких обработчиков событий. Откуда бы им (обработчикам) взяться? Выхода два: 1) После .load навешивать обработчики 2) Делегировать обработчики родителю, который заведомо всегда присутствует на странице. Делегат создается так: $(parent).on('submit', '.setfilter', function(){}) Цитата:
Зачем тебе метод attr, когда все доступно как this.method и this.action? И такое именование не используется в JavaScript. Вроде в C++ так пишут. |
После .load навешивать обработчики
----------------------- как после лоад навесить. |
$.load('url', function(){
// тут навешиваем. элементы уже созданы из загруженного html }); |
В общем докопался до сути , почему то , при конструкции не важно .ON или .DELEGATE вида
$(document).on('click',"#showgruz",function(){ alert('работает'); $('#setgruz').show(); }); Алерт работает всегда и везде , а вот более сложные события , show , fadein и т.п не срабатывают Что за чертовщина ? Как так получается что 1 событие работает а второе нет |
Цитата:
|
<script src="http://code.jquery.com/jquery-latest.min.js"></script> <script> $(document).on('click',"#showgruz",function(){ alert('работает'); $('#setgruz').show(); }); </script> <button id="showgruz">showgruz</button> <a id="setgruz" style="display:none">setgruz</a> |
Часовой пояс GMT +3, время: 07:41. |