动态添加元素时触发javascript / jQuery

时间:2014-09-29 08:17:49

标签: javascript jquery

在通过js / jQuery动态加载的元素上执行某些操作的最简洁方法是什么?基本上,用户添加了一个可能包含所见即所得编辑器的表单(取决于上下文);这是一个需要像$(".wysiwygTA").editor();这样的东西的textarea。当然,我可以这样做:

var newForm = 'some_form_loaded_via_ajax_with_a <textarea class="wysiwygTA"> in_it';
$(".formWrapper").append(newForm);
$(newForm).find(".wysiwygTA").each(function(){ $(this}.editor(); });

但这对我来说似乎并不干净。理想情况下,我想以

的方式做点什么
$(document).listenForAddedTextarea(function(textarea){textarea.edtior();});

这样我就可以从多个地方添加表单。我可以在一个单独的函数中隔离编辑器调用,然后调用它,但每次我想添加一个元素时,我仍然需要额外的一行代码。

所以:最好的解决方法是什么? :O)

最诚挚的问候,

Rasmus Dencker

3 个答案:

答案 0 :(得分:0)

使用Bind方法动态绑定:

 $( document ).bind( "listenForAddedTextarea", function(textarea) {
 textarea.edtior();
 });

答案 1 :(得分:0)

JS中没有elementAdded事件。您唯一的选择是您提到的第一个选项。从服务器返回的HTML中添加脚本是一个坏主意IMO。

答案 2 :(得分:0)

你可以做一件事。创建一个事件并随时触发该事件。

  1. 创建一个&#39; listenForAddedTextarea&#39;事件如
  2. $(document).on("listenForAddedTextarea", function(textarea) {
     textarea.edtior();
    });
    
    1. 触发事件
    2.   

      (文档)$ .trigger(&#34; listenForAddedTextarea&#34);