2015-04-17 3 views
0

У меня есть простой скрипт, где я переключаю div.jQuery onclick не работает в загруженном классе

<div id='csupport'></div> 
<script> 
$(document).ready(function() {  
    $("#csupport").load("csupport.php .email-item"); 
    $(".writee, .reply").click(function() { 
    $(".format").toggle(); 
    }); 
}); 
</script> 

Проблема заключается в том, что функция переключения не работает для .reply класса. Класс ответа вытягивается из csupport.php. Любая идея, как заставить его работать?

+0

Но он работает для '.writee'? Вы получаете какие-либо ошибки консоли? F12 в Firefox или Chrome -> вкладка 'Console'. –

+0

.writee работает, потому что находится в том же файле, но .reload вытащили из внешнего файла – Grasper

+0

вы можете поделиться с html тоже? или jsfiddle? – Sushil

ответ

2

Если элементы добавляются на страницу динамически, вы должны использовать JQuery .На() или .OFF() для связывания событий для динамических вещей, как это:

$("body").on("click", ".reply", function() { 
    $(".format").toggle(); 
}); 
+0

Это работает, спасибо большое! – Grasper

3

Как вы загружаете контент через .load(), поэтому .reply и .writee элементов добавление к #csupport после загрузки страницы, что делает их динамические элементы. Итак, вам нужна делегирование событий (например, привязка к событиям в реальном времени). Попробуйте это:

$("body").on("click", ".reply", function() { 
    $(".format").toggle(); 
}); 
+1

теперь отлично работает, спасибо – Grasper

+0

@ Grasper Лучше не связывать «тело», а не привязывать к любому ближайшему элементу Static Parent, который содержит все эти динамические элементы, и это хорошая практика. – thecodeparadox

+0

но это не сработало – Grasper

Смежные вопросы