Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.03.2014, 03:19
Аспирант
Отправить личное сообщение для kapustnik Посмотреть профиль Найти все сообщения от kapustnik
 
Регистрация: 18.04.2013
Сообщений: 32

.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 работают , а это - нет

В чем проблема ?
Ответить с цитированием
  #2 (permalink)  
Старый 22.03.2014, 03:46
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от kapustnik
В чем проблема ?
В твоем непонимании javascript'а.

После .load на странице появляются новые элементы, у которых не установлено никаких обработчиков событий. Откуда бы им (обработчикам) взяться?
Выхода два:
1) После .load навешивать обработчики
2) Делегировать обработчики родителю, который заведомо всегда присутствует на странице. Делегат создается так:
$(parent).on('submit', '.setfilter', function(){})

Сообщение от kapustnik
var m_method=$(this).attr('method');
var m_action=$(this).attr('action');
Вот так и бывает когда лезут во всякие библиотеки, не изучив нативные API.
Зачем тебе метод attr, когда все доступно как this.method и this.action?
И такое именование не используется в JavaScript. Вроде в C++ так пишут.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 22.03.2014, 03:59
Аспирант
Отправить личное сообщение для kapustnik Посмотреть профиль Найти все сообщения от kapustnik
 
Регистрация: 18.04.2013
Сообщений: 32

После .load навешивать обработчики
-----------------------
как после лоад навесить.
Ответить с цитированием
  #4 (permalink)  
Старый 22.03.2014, 05:18
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

$.load('url', function(){
// тут навешиваем. элементы уже созданы из загруженного html
});
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 22.03.2014, 14:47
Аспирант
Отправить личное сообщение для kapustnik Посмотреть профиль Найти все сообщения от kapustnik
 
Регистрация: 18.04.2013
Сообщений: 32

В общем докопался до сути , почему то , при конструкции не важно .ON или .DELEGATE вида

$(document).on('click',"#showgruz",function(){
alert('работает'); 
 $('#setgruz').show(); 
});


Алерт работает всегда и везде , а вот более сложные события , show , fadein и т.п не срабатывают

Что за чертовщина ? Как так получается что 1 событие работает а второе нет

Последний раз редактировалось kapustnik, 22.03.2014 в 14:50.
Ответить с цитированием
  #6 (permalink)  
Старый 23.03.2014, 04:21
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от kapustnik
более сложные события , show , fadein
Каким боком это события?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #7 (permalink)  
Старый 23.03.2014, 04:24
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

<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>
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт правильно работает только один раз, после начинает выдавать ошибку. xodock Events/DOM/Window 2 23.07.2012 13:04
Не работает hover() после добавление элемента в DOM jeysmook jQuery 17 10.06.2012 15:02
Не работает кнопка отправки после загрузки Igor Shmigoff jQuery 2 29.12.2010 21:51
Динамическая HTML форма (FireFox - работает, IE - не работает) dm1tr1y Общие вопросы Javascript 10 11.12.2009 15:59
Скрипт меню-гармошки работает выборочно Extern Элементы интерфейса 2 23.02.2009 15:32