2016-02-18 4 views
1

На моем сайте я использую библиотеку jQuery autosize.Используйте те же функции для новых элементов DOM

Он используется на прокручиваемых, и определен в моем файле javascript.js, только с:

$(".autosize").autosize(); 

Проблемы в том, что, когда я хочу, чтобы загрузить новые в мой текстовых областях сайта с помощью Ajax, мне нужно напишите это снова в возврате ajax. Fx:

<textarea name='something' class='autosize'></textarea> 
<script type='text/javascript'> 
    $(".autosize").autosize(); 
</script> 

Разве это не возможно для новых прокручиваемых, вставленной в DOM, автоматически «действовать» в соответствии с файлом javascript.js из моего заголовка?

FYI, эти вопросы упрощаются, и реальный случай находится в гораздо большем масштабе.

+0

проверить это облизывание http://stackoverflow.com/questions/25410696/jquery-autosize-plugin-on-dynamically-added-textarea-elements – shu

ответ

1

Поскольку вы используете ajax для добавления элемента, а затем в глобальный файл js, вы можете сделать что-то вроде ниже.

$(document).ajaxSuccess(function() { 
    $(".autosize").autosize(); 
}); 

Использование осуждается DOMNodeInserted слушателю

$('body').on('DOMNodeInserted', '.autosize', function(e) { 
     $(".autosize").autosize(); 
    }); 
+2

[_this функция удалена из Интернета. Хотя некоторые браузеры все еще могут его поддерживать, он находится в процессе отбрасывания. Не используйте его в старых или новых проектах. Страницы или веб-приложения, использующие его, могут прерываться в любое время ._] (https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events) Всегда учитывайте поддержку браузера. Он может работать в вашем браузере, но может не работать с другими. – Rayon

+0

@RayonDabre Есть ли другой метод, заменивший этот метод? – Behrens

+0

Глобальный обработчик 'AJAX'? Инициализируйте его каждый раз, когда вы вызываете 'success'. Но я бы инициализировал его вручную каждый раз, когда я вставляю новый целевой элемент, который должен быть прикреплен к любому виджету ... – Rayon