.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, время: 21:49. |